diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 16:54:56 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-07-06 16:54:56 +0000 |
commit | 202643de00ee1a241aa4c082e74967eda02c4ebb (patch) | |
tree | 5f59ba42dd60be972b26f762c7d9eb1d3905a259 /cont.c | |
parent | bba7c4b0dc7441f6c61f677bf0295cab84ad123b (diff) | |
download | ruby-202643de00ee1a241aa4c082e74967eda02c4ebb.tar.gz |
* 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
Diffstat (limited to 'cont.c')
-rw-r--r-- | cont.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -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; |