From 202643de00ee1a241aa4c082e74967eda02c4ebb Mon Sep 17 00:00:00 2001 From: ko1 Date: Mon, 6 Jul 2015 16:54:56 +0000 Subject: * cont.c (fiber_init): initialize control frame correctly. This fix does not affect any ordinal execution, but affects debug prints. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ cont.c | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1bd1b7db4a..d2ac69160c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Jul 7 01:52:14 2015 Koichi Sasada + + * cont.c (fiber_init): initialize control frame correctly. + This fix does not affect any ordinal execution, but + affects debug prints. + Mon Jul 6 17:59:05 2015 Koichi Sasada * vm_insnhelper.c (vm_search_super_method): do not skip calling diff --git a/cont.c b/cont.c index 0ad91619bc..dc412ec46c 100644 --- a/cont.c +++ b/cont.c @@ -1196,14 +1196,15 @@ fiber_init(VALUE fibval, VALUE proc) th->cfp = (void *)(th->stack + th->stack_size); th->cfp--; th->cfp->pc = 0; - th->cfp->sp = th->stack + 1; + th->cfp->sp = th->stack + 2; #if VM_DEBUG_BP_CHECK th->cfp->bp_check = 0; #endif - th->cfp->ep = th->stack; - *th->cfp->ep = VM_ENVVAL_BLOCK_PTR(0); + th->cfp->ep = th->stack + 1; + th->cfp->ep[ 0] = VM_ENVVAL_BLOCK_PTR(0); + th->cfp->ep[-1] = 0; th->cfp->self = Qnil; - th->cfp->flag = 0; + th->cfp->flag = VM_FRAME_MAGIC_DUMMY | VM_FRAME_FLAG_FINISH; th->cfp->iseq = 0; th->cfp->proc = 0; th->cfp->block_iseq = 0; -- cgit v1.2.3