summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglass <glass@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-09 13:14:09 +0000
committerglass <glass@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-09 13:14:09 +0000
commit62efc6f305045d83eab8493bc3b58e9bd3504159 (patch)
tree6be2b74217faa4392a83b2179265c6c5efc4aed7
parent94b4e7c78311679859d5bd6505382885cc7cb169 (diff)
* load.c (load_lock): if thread shield is destroyed and there is no
waiting thread, insert new thread shield into load_table. [Bug #7530] [ruby-core:50645] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38750 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--load.c2
2 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 99c8954..d10714b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Jan 9 22:07:42 2013 Masaki Matsushita <glass.saga@gmail.com>
+
+ * load.c (load_lock): if thread shield is destroyed and there is no
+ waiting thread, insert new thread shield into load_table.
+ [Bug #7530] [ruby-core:50645]
+
Wed Jan 9 21:43:32 2013 Masaki Matsushita <glass.saga@gmail.com>
* load.c (load_lock): revert r38744. it should acquire new thread
diff --git a/load.c b/load.c
index 70e3ee8..a2986d4 100644
--- a/load.c
+++ b/load.c
@@ -669,7 +669,7 @@ load_lock(const char *ftptr)
switch (rb_thread_shield_wait((VALUE)data)) {
case Qfalse:
data = (st_data_t)ftptr;
- st_delete(loading_tbl, &data, 0);
+ st_insert(loading_tbl, data, (st_data_t)rb_thread_shield_new());
return 0;
case Qnil:
return 0;