summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--cont.c2
-rw-r--r--yarvcore.c5
3 files changed, 10 insertions, 2 deletions
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 <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().
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--;