diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | cont.c | 2 | ||||
-rw-r--r-- | yarvcore.c | 5 |
3 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Tue Jun 26 03:38:31 2007 Koichi Sasada <ko1@atdot.net> + + * 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 <ko1@atdot.net> * compile.c: rename setup_arg() to setup_args(). @@ -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--; |