diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-25 23:28:04 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-06-25 23:28:04 +0000 |
commit | 78c763a25c4bf5ddd1dcf5887ad9c94ba27575df (patch) | |
tree | e916a18df671be5c20a512db823da652b5100d61 /test/ruby/test_env.rb | |
parent | 7eeaf208b484f257bc6c04e4229cb924e00a18c1 (diff) |
hash.c: fix memory leak
* hash.c (env_select): fix memory leak and crash on Windows, make
keys array first instead of iterating on envrion directly.
[ruby-dev:48325] [Bug #9978]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46557 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_env.rb')
-rw-r--r-- | test/ruby/test_env.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_env.rb b/test/ruby/test_env.rb index ecf0608ec6..5eff01c5a2 100644 --- a/test/ruby/test_env.rb +++ b/test/ruby/test_env.rb @@ -517,4 +517,20 @@ class TestEnv < Test::Unit::TestCase v = (ENV[k] = 'bar'*5000 rescue 'bar'*1500) end; end + + def test_memory_leak_select + bug9978 = '[ruby-dev:48325] [Bug #9978]' + assert_no_memory_leak([], <<-'end;', "5_000.times {ENV.select {break}}", bug9978) + ENV.clear + k = 'FOO' + (ENV[k] = 'bar'*5000 rescue 'bar'*1500) + end; + end + + def test_memory_crash_select + assert_normal_exit(<<-'end;') + 1000.times {ENV["FOO#{i}"] = 'bar'} + ENV.select {ENV.clear} + end; + end end |