diff --git a/ChangeLog b/ChangeLog index 9cdafd20b6..250aa589d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Jun 26 03:38:31 2007 Koichi Sasada + + * cont.c (rb_fiber_s_new), yarvcore.c (th_init2): fix to clear + VM stack ([ruby-dev:31046]). + Tue Jun 26 03:15:27 2007 Koichi Sasada * compile.c: rename setup_arg() to setup_args(). diff --git a/cont.c b/cont.c index 71bc4601b2..022df065a7 100644 --- a/cont.c +++ b/cont.c @@ -474,6 +474,8 @@ rb_fiber_s_new(VALUE self) th->stack = 0; th->stack_size = FIBER_STACK_SIZE; th->stack = ALLOC_N(VALUE, th->stack_size); + MEMZERO(th->stack, VALUE, th->stack_size); + th->cfp = (void *)(th->stack + th->stack_size); th->cfp--; th->cfp->pc = 0; diff --git a/yarvcore.c b/yarvcore.c index e4e93aa0e4..f5b3225a2f 100644 --- a/yarvcore.c +++ b/yarvcore.c @@ -327,9 +327,10 @@ th_init2(rb_thread_t *th) MEMZERO(th, rb_thread_t, 1); /* allocate thread stack */ - th->stack = ALLOC_N(VALUE, RUBY_VM_THREAD_STACK_SIZE); - th->stack_size = RUBY_VM_THREAD_STACK_SIZE; + th->stack = ALLOC_N(VALUE, th->stack_size); + MEMZERO(th->stack, VALUE, th->stack_size); + th->cfp = (void *)(th->stack + th->stack_size); th->cfp--;