diff options
| author | Miguel Sofer <miguel.sofer@gmail.com> | 2010-08-30 14:02:09 (GMT) |
|---|---|---|
| committer | Miguel Sofer <miguel.sofer@gmail.com> | 2010-08-30 14:02:09 (GMT) |
| commit | 85842648088c2c339519cce28a01760ccabac539 (patch) | |
| tree | 5b8a101944274a127a5d4ca47620a73473d4569b /generic/tclExecute.c | |
| parent | a26804dba9e8049a1c47c3288b518d3b71ca975f (diff) | |
| download | tcl-85842648088c2c339519cce28a01760ccabac539.zip tcl-85842648088c2c339519cce28a01760ccabac539.tar.gz tcl-85842648088c2c339519cce28a01760ccabac539.tar.bz2 | |
* generic/tclBasic.c: New implementation for [tailcall]:
* generic/tclCmdAH.c: it now schedules the command and returns
* generic/tclCmdMZ.c: TCL_RETURN. This fixes all issues with
* generic/tclExecute.c: [catch] and [try] - [Bug 3046594],
* generic/tclInt.h: [Bug 3047235] and [Bug 3048771]. Thanks
* generic/tclNamesp.c: dgp for exploring the dark corners.
* tests/tailcall.test: More thorough testing is required.
Diffstat (limited to 'generic/tclExecute.c')
| -rw-r--r-- | generic/tclExecute.c | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 4970443..2664558 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.492 2010/08/22 18:53:26 nijtmans Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.493 2010/08/30 14:02:09 msofer Exp $ */ #include "tclInt.h" @@ -2901,25 +2901,6 @@ TclExecuteByteCode( iPtr->cmdFramePtr = bcFramePtr->nextPtr; TclArgumentBCRelease((Tcl_Interp *) iPtr, bcFramePtr); - /* - * If the CallFrame is marked as tailcalling, keep tailcalling - */ - - if (iPtr->varFramePtr->isProcCallFrame & FRAME_TAILCALLING) { - if (catchTop == initCatchTop) { - goto abnormalReturn; - } - - iPtr->varFramePtr->isProcCallFrame &= ~FRAME_TAILCALLING; - TclRemoveTailcall(interp); - Tcl_SetResult(interp, - "tailcall called from within a catch environment", - TCL_STATIC); - Tcl_SetErrorCode(interp, "TCL", "TAILCALL", "ILLEGAL", NULL); - pc--; - goto gotError; - } - if (iPtr->execEnvPtr->rewind) { TRESULT = TCL_ERROR; goto abnormalReturn; |
