diff options
author | Miguel Sofer <miguel.sofer@gmail.com> | 2016-01-28 22:48:41 (GMT) |
---|---|---|
committer | Miguel Sofer <miguel.sofer@gmail.com> | 2016-01-28 22:48:41 (GMT) |
commit | f8de35dc24321fc9fecc9696574396c9e47a73dc (patch) | |
tree | bb46a44fc02ec53221bc5bcb65311d70c1fabe86 | |
parent | 92c65512687b42a7e97916db775e08be6f8b62ca (diff) | |
download | tcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.zip tcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.tar.gz tcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.tar.bz2 |
tiny mods
-rw-r--r-- | generic/tclCmdAH.c | 23 | ||||
-rw-r--r-- | generic/tclCmdIL.c | 2 | ||||
-rw-r--r-- | generic/tclExecute.c | 8 | ||||
-rw-r--r-- | generic/tclNRE.h | 2 |
4 files changed, 15 insertions, 20 deletions
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c index 6f02f3b..698782a 100644 --- a/generic/tclCmdAH.c +++ b/generic/tclCmdAH.c @@ -226,7 +226,7 @@ CatchObjCmdCallback( Tcl_ResetResult(interp); Tcl_SetObjResult(interp, Tcl_NewIntObj(result)); - return TCL_OK; + NRE_NEXT(TCL_OK); } /* @@ -2329,17 +2329,18 @@ ForCondCallback( } Tcl_DecrRefCount(boolObj); - if (value) { - if (/*next*/ data[2]) { - TclNRAddCallback(interp, ForNextCallback, data[0], data[1], - data[2], NULL); - } else { - TclNRAddCallback(interp, TclNRForIterCallback, data[0], data[1], - data[2], NULL); - } - return TclNREvalObjEx(interp, /*body*/ data[1], 0); + if (!value) { + NRE_NEXT(result); } - NRE_NEXT(result); + + if (/*next*/ data[2]) { + TclNRAddCallback(interp, ForNextCallback, data[0], data[1], + data[2], NULL); + } else { + TclNRAddCallback(interp, TclNRForIterCallback, data[0], data[1], + data[2], NULL); + } + return TclNREvalObjEx(interp, /*body*/ data[1], 0); } static int diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index 9cdbcf7..a0e8113 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -256,7 +256,7 @@ IfConditionCallback( } if (Tcl_GetBooleanFromObj(interp, boolObj, &value) != TCL_OK) { TclDecrRefCount(boolObj); - return TCL_ERROR; + NRE_NEXT(TCL_ERROR); } TclDecrRefCount(boolObj); diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 3a3280a..5de6a16 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -2388,14 +2388,8 @@ TEBCresume( pc++; cleanup = 1; TEBC_YIELD(); -#if 0 - TclNRAddCallback(interp, TclNRCoroutineActivateCallback, corPtr, - INT2PTR(yieldParameter), NULL, NULL); - return TCL_OK; -#else - NRE_JUMP(interp, TclNRCoroutineActivateCallback, corPtr, + NRE_JUMP(interp, TclNRCoroutineActivateCallback, corPtr, INT2PTR(yieldParameter), NULL, NULL); -#endif } case INST_TAILCALL: { diff --git a/generic/tclNRE.h b/generic/tclNRE.h index 85af76a..449e840 100644 --- a/generic/tclNRE.h +++ b/generic/tclNRE.h @@ -79,7 +79,7 @@ typedef struct NRE_stack { do { /* optimized indirect sibling calls?! */ \ NRE_callback *cbPtr; \ POP_CB(interp, cbPtr); \ - return (cbPtr->procPtr)(cbPtr->data, interp, result); \ + return (cbPtr->procPtr)(cbPtr->data, interp, (result)); \ } while (0) #endif |