summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPeter Zhu <peter@peterzhu.ca>2023-06-27 14:34:03 -0400
committerPeter Zhu <peter@peterzhu.ca>2023-06-28 09:50:51 -0400
commita500eb9f8c487c9245d82f9b3c64cd3ddf44c836 (patch)
tree6be42567aa793b3d046e8217a54f1aa74d4c6114 /test
parent3d7a6bbc12d9eed9f1e0135c44fdeab08434e4b5 (diff)
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 ```
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/7985
Diffstat (limited to 'test')
-rw-r--r--test/ripper/test_ripper.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/ripper/test_ripper.rb b/test/ripper/test_ripper.rb
index 76276c54ef..a3fa050998 100644
--- a/test/ripper/test_ripper.rb
+++ b/test/ripper/test_ripper.rb
@@ -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