diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2024-07-31 14:18:39 -0400 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2024-08-06 10:19:50 -0400 |
| commit | ced35800d48e671ed739c8451823c7d3180ef8ac (patch) | |
| tree | db9fec2f1f8ea81501a5722d13e80ec6f2febeea /array.c | |
| parent | c0938fd24c927954dbe5d42e70844b6a89516786 (diff) | |
Fix leak in warning of duplicate keys when Ripper#warn jumps
For example, the following code leaks:
class MyRipper < Ripper
def initialize(src, &blk)
super(src)
@blk = blk
end
def warn(msg, *args) = @blk.call(msg)
end
$VERBOSE = true
def call_parse = MyRipper.new("if true\n end\n") { |msg| return msg }.parse
10.times do
500_000.times do
call_parse
end
puts `ps -o rss= -p #{$$}`
end
Before:
34832
51952
69760
88048
105344
123040
141152
159152
176656
194272
After:
18400
20256
20272
20272
20272
20304
20368
20368
20368
20400
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/11288
Diffstat (limited to 'array.c')
0 files changed, 0 insertions, 0 deletions
