summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2016-01-28 22:48:41 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2016-01-28 22:48:41 (GMT)
commitf8de35dc24321fc9fecc9696574396c9e47a73dc (patch)
treebb46a44fc02ec53221bc5bcb65311d70c1fabe86
parent92c65512687b42a7e97916db775e08be6f8b62ca (diff)
downloadtcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.zip
tcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.tar.gz
tcl-f8de35dc24321fc9fecc9696574396c9e47a73dc.tar.bz2
tiny mods
-rw-r--r--generic/tclCmdAH.c23
-rw-r--r--generic/tclCmdIL.c2
-rw-r--r--generic/tclExecute.c8
-rw-r--r--generic/tclNRE.h2
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