aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--thread.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3d27d77add..51e2b242f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Dec 24 13:43:36 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * thread.c (rb_thread_atfork): should not leave living_threads
+ referring freed table while allocating new table.
+
Mon Dec 24 12:49:54 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
diff --git a/thread.c b/thread.c
index d4916016c5..01a39d70b5 100644
--- a/thread.c
+++ b/thread.c
@@ -1974,11 +1974,10 @@ rb_thread_atfork(void)
{
rb_thread_t *th = GET_THREAD();
rb_vm_t *vm = th->vm;
- volatile VALUE thval = th->self;
+ VALUE thval = th->self;
vm->main_thread = th;
- st_free_table(vm->living_threads);
- vm->living_threads = st_init_numtable();
+ st_clear(vm->living_threads);
st_insert(vm->living_threads, thval, (st_data_t) th->thread_id);
}