Fix memory leak in Ripper
The following script leaks memory in Ripper: ```ruby require "ripper" 20.times do 100_000.times do Ripper.parse("") end puts `ps -o rss= -p #{$$}` end ```
This commit is contained in:
parent
3d7a6bbc12
commit
a500eb9f8c
Notes:
git
2023-06-28 13:51:10 +00:00
@ -33,6 +33,7 @@ ripper_parser_free2(void *ptr)
|
||||
{
|
||||
struct ripper *r = (struct ripper*)ptr;
|
||||
ripper_parser_free(r->p);
|
||||
xfree(r);
|
||||
}
|
||||
|
||||
static size_t
|
||||
|
@ -141,6 +141,14 @@ end
|
||||
assert_nothing_raised { Ripper.lex src }
|
||||
end
|
||||
|
||||
def test_no_memory_leak
|
||||
assert_no_memory_leak(%w(-rripper), "", "#{<<~'end;'}", rss: true)
|
||||
10_000_000.times do
|
||||
Ripper.parse("")
|
||||
end
|
||||
end;
|
||||
end
|
||||
|
||||
class TestInput < self
|
||||
Input = Struct.new(:lines) do
|
||||
def gets
|
||||
|
Loading…
x
Reference in New Issue
Block a user