diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2024-07-31 13:32:29 -0400 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2024-07-31 14:47:44 -0400 |
| commit | 635839749026b5d5bafeb892f2f01a9348a4b5c8 (patch) | |
| tree | ae9b62749e81ebb598c4bdfcce8e7ee4ab705bee /test/ruby/test_lambda.rb | |
| parent | 70b4f45d9f1936128e73ab0b8701269c06e709f5 (diff) | |
Fix leak of AST when Ripper#compile_error jumps
For example, the following script leaks:
class MyRipper < Ripper
def initialize(src, &blk)
super(src)
@blk = blk
end
def compile_error(msg) = @blk.call(msg)
end
def call_parse = MyRipper.new("/") { |msg| return msg }.parse
10.times do
100_000.times do
call_parse
end
puts `ps -o rss= -p #{$$}`
end
Before:
93952
169040
244224
318784
394432
468224
544048
618560
693776
768384
After:
19776
19776
20352
20880
20912
21408
21328
21152
21472
20944
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/11287
Diffstat (limited to 'test/ruby/test_lambda.rb')
0 files changed, 0 insertions, 0 deletions
