diff --git a/ChangeLog b/ChangeLog index 99c89542eb..d10714b192 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Jan 9 22:07:42 2013 Masaki Matsushita + + * 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 * load.c (load_lock): revert r38744. it should acquire new thread diff --git a/load.c b/load.c index 70e3ee8646..a2986d42ed 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;