summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2009-12-13 17:11:47 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2009-12-13 17:11:47 (GMT)
commit64cd452abe0622edb368d64ef22b368689b6cc86 (patch)
tree308535394c93daef6801a789aefdf38a27605407 /generic/tclExecute.c
parenteb5b16a4cf09bf5b1a7d496074935db1ed60eed2 (diff)
downloadtcl-64cd452abe0622edb368d64ef22b368689b6cc86.zip
tcl-64cd452abe0622edb368d64ef22b368689b6cc86.tar.gz
tcl-64cd452abe0622edb368d64ef22b368689b6cc86.tar.bz2
* generic/tclBasic.c: Release TclPopCallFrame() from its
* generic/tclExecute.c: tailcall-management duties * generic/tclNamesp.c:
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index a8a979d..e553356 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -14,7 +14,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclExecute.c,v 1.467 2009/12/13 16:41:37 msofer Exp $
+ * RCS: @(#) $Id: tclExecute.c,v 1.468 2009/12/13 17:11:47 msofer Exp $
*/
#include "tclInt.h"
@@ -2856,10 +2856,7 @@ TclExecuteByteCode(
TclArgumentBCRelease((Tcl_Interp *) iPtr, bcFramePtr);
if (catchTop != initCatchTop) {
- TEOV_callback *tailcallPtr =
- iPtr->varFramePtr->tailcallPtr;
-
- TclClearTailcall(interp, tailcallPtr);
+ TclClearTailcall(interp, param);
iPtr->varFramePtr->tailcallPtr = NULL;
TRESULT = TCL_ERROR;
Tcl_SetResult(interp,
@@ -2870,6 +2867,8 @@ TclExecuteByteCode(
pc--;
goto checkForCatch;
}
+ iPtr->varFramePtr->tailcallPtr = param;
+ TclSpliceTailcall(interp, param);
goto abnormalReturn;
case TCL_NR_YIELD_TYPE: { /* [yield] */
CoroutineData *corPtr = iPtr->execEnvPtr->corPtr;