diff options
author | dgp <dgp@users.sourceforge.net> | 2016-06-28 22:49:22 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2016-06-28 22:49:22 (GMT) |
commit | d2629fb2726fa18af638288c9c9aa89369b9fade (patch) | |
tree | 5a668f6c4e6abf7a07037bf9a931592971a77f11 /generic/tclExecute.c | |
parent | 2880e7da55a9d5ff7d8ba8fed48743f0e15733a4 (diff) | |
parent | edc450c53752cf92b00a45883fee2d66a2bde27c (diff) | |
download | tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.zip tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.tar.gz tcl-d2629fb2726fa18af638288c9c9aa89369b9fade.tar.bz2 |
merge 8.6
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r-- | generic/tclExecute.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index d4077f5..355b667 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -2081,6 +2081,8 @@ TclNRExecuteByteCode( * Push the callback for bytecode execution */ + TclResetRewriteEnsemble(interp, 1); + TclNRAddCallback(interp, TEBCresume, TD, /* pc */ NULL, /* cleanup */ INT2PTR(0), NULL); return TCL_OK; @@ -3172,9 +3174,8 @@ TEBCresume( if (iPtr->flags & INTERP_DEBUG_FRAME) { ArgumentBCEnter(interp, codePtr, TD, pc, objc, objv); } - iPtr->ensembleRewrite.sourceObjs = objv; - iPtr->ensembleRewrite.numRemovedObjs = opnd; - iPtr->ensembleRewrite.numInsertedObjs = 1; + + TclInitRewriteEnsemble(interp, opnd, 1, objv); DECACHE_STACK_INFO(); pc += 6; TEBC_YIELD(); @@ -7706,6 +7707,7 @@ TEBCresume( goto gotError; } } + Tcl_IncrRefCount(dictPtr); if (TclListObjGetElements(interp, OBJ_AT_TOS, &length, &keyPtrPtr) != TCL_OK) { TRACE_ERROR(interp); @@ -7718,6 +7720,7 @@ TEBCresume( if (Tcl_DictObjGet(interp, dictPtr, keyPtrPtr[i], &valuePtr) != TCL_OK) { TRACE_ERROR(interp); + Tcl_DecrRefCount(dictPtr); goto gotError; } varPtr = LOCAL(duiPtr->varIndices[i]); @@ -7734,10 +7737,12 @@ TEBCresume( duiPtr->varIndices[i]) == NULL) { CACHE_STACK_INFO(); TRACE_ERROR(interp); + Tcl_DecrRefCount(dictPtr); goto gotError; } CACHE_STACK_INFO(); } + TclDecrRefCount(dictPtr); TRACE_APPEND(("OK\n")); NEXT_INST_F(9, 0, 0); |