diff options
| author | Peter Zhu <peter@peterzhu.ca> | 2024-07-31 14:59:21 -0400 |
|---|---|---|
| committer | Peter Zhu <peter@peterzhu.ca> | 2024-08-07 09:14:14 -0400 |
| commit | 584559d86a951095d793a536ad998e12ea08a890 (patch) | |
| tree | 0ae27b633e48bbb0eed2e770917f45fc7a288d4b /array.c | |
| parent | 60bbd9e462eaa84fa7393e4db11ed5ad52a5ae9a (diff) | |
Fix leak of token_info 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:
37536
53744
70064
86448
102576
119120
135248
151216
167744
183824
After:
19280
19696
19728
20336
20448
21408
21616
21616
21824
21840
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/11289
Diffstat (limited to 'array.c')
0 files changed, 0 insertions, 0 deletions
