summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-03 16:28:20 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-03 16:28:20 +0000
commit85c48fdc312a923c1bfe0ed88fa302d6417d9402 (patch)
treea3c657cd2f7d609552fe78d0f3052f41ec4dd651 /test
parentd4132b8ae0e79f3fc21bad0fdba1a79fdd6c48b0 (diff)
merge revision(s) r46557,r46565: [Backport #9978]
* 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] keys array first instead of iterating on environ directly. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47054 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_env.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/ruby/test_env.rb b/test/ruby/test_env.rb
index 5eb6717405..2b286de04e 100644
--- a/test/ruby/test_env.rb
+++ b/test/ruby/test_env.rb
@@ -418,4 +418,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