diff options
author | glass <glass@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-09 00:59:30 +0000 |
---|---|---|
committer | glass <glass@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-09 00:59:30 +0000 |
commit | bc0577c6c8607d57a13282a34c80f64fe9bf1eef (patch) | |
tree | 761a7885d5aafcd54a17a68e97b0567689bb2ba6 /test | |
parent | 4ddf057b9aace467b707347209bb572ea2643c32 (diff) | |
download | ruby-bc0577c6c8607d57a13282a34c80f64fe9bf1eef.tar.gz |
* load.c (load_lock): fix not to delete thread shield twice.
it may break the shield locked by another thread.
[Bug #7530] [ruby-core:50645]
* test/ruby/test_require.rb: a test for above.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_require.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/ruby/test_require.rb b/test/ruby/test_require.rb index 410edbb276..1ff2d78697 100644 --- a/test/ruby/test_require.rb +++ b/test/ruby/test_require.rb @@ -604,4 +604,25 @@ class TestRequire < Test::Unit::TestCase } } end + + def test_require_with_loaded_features_pop + bug7530 = '[ruby-core:50645]' + assert_in_out_err([], <<-INPUT, %w(:ok), [], bug7530) + THREADS = 2 + ITERATIONS_PER_THREAD = 1000 + + $: << '.' + system 'touch __load_path_bench_script__.rb' + THREADS.times.map { + Thread.new do + ITERATIONS_PER_THREAD.times do + require '__load_path_bench_script__' + $".pop + end + end + }.each(&:join) + system 'rm __load_path_bench_script__.rb' + p :ok + INPUT + end end |