diff --git a/ChangeLog b/ChangeLog index 17a04c9ab9..8ad03354a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Nov 24 10:59:14 2012 KOSAKI Motohiro + + * thread.c (thread_create_core): don't use th->thread_id before + initialized. + Sat Nov 24 00:00:53 2012 Nobuyoshi Nakada * ruby.c (proc_options, process_options, ruby_process_options): take diff --git a/thread.c b/thread.c index 159dbffc87..64eaadc9b5 100644 --- a/thread.c +++ b/thread.c @@ -570,13 +570,12 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS)) native_mutex_initialize(&th->interrupt_lock); /* kick thread */ - st_insert(th->vm->living_threads, thval, (st_data_t) th->thread_id); err = native_thread_create(th); if (err) { - st_delete_wrap(th->vm->living_threads, th->self); th->status = THREAD_KILLED; rb_raise(rb_eThreadError, "can't create Thread (%d)", err); } + st_insert(th->vm->living_threads, thval, (st_data_t) th->thread_id); return thval; }