diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | generic/tclExecute.c | 12 |
2 files changed, 9 insertions, 7 deletions
@@ -1,3 +1,7 @@ +2008-08-16 Miguel Sofer <msofer@users.sf.net> + + * generic/tclExecute.c: better cmdFrame management + 2008-08-14 Don Porter <dgp@users.sourceforge.net> * tests/fileName.test: Revise new tests for portability to case diff --git a/generic/tclExecute.c b/generic/tclExecute.c index d2c656e..950df0d 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.403 2008/08/09 22:20:57 msofer Exp $ + * RCS: @(#) $Id: tclExecute.c,v 1.404 2008/08/16 14:00:08 msofer Exp $ */ #include "tclInt.h" @@ -174,9 +174,8 @@ static BuiltinFunc tclBuiltinFuncTable[] = { typedef struct BottomData { struct BottomData *prevBottomPtr; - TEOV_callback *rootPtr; /* State when this bytecode execution began. */ - ByteCode *codePtr; /* These fields remain constant until it */ - CmdFrame *cmdFramePtr; /* returns. */ + TEOV_callback *rootPtr; /* State when this bytecode execution began: */ + ByteCode *codePtr; /* constant until it returns */ /* ------------------------------------------*/ TEOV_callback *atExitPtr; /* This field is used on return FROM here */ /* ------------------------------------------*/ @@ -190,7 +189,6 @@ typedef struct BottomData { bottomPtr->prevBottomPtr = oldBottomPtr; \ bottomPtr->rootPtr = TOP_CB(iPtr); \ bottomPtr->codePtr = codePtr; \ - bottomPtr->cmdFramePtr = iPtr->cmdFramePtr; \ bottomPtr->atExitPtr = NULL #define NR_DATA_BURY() \ @@ -207,8 +205,7 @@ typedef struct BottomData { cleanup = bottomPtr->cleanup; \ auxObjList = bottomPtr->auxObjList; \ esPtr = iPtr->execEnvPtr->execStackPtr; \ - tosPtr = esPtr->tosPtr; \ - iPtr->cmdFramePtr = bottomPtr->cmdFramePtr; + tosPtr = esPtr->tosPtr static Tcl_NRPostProc NRRestoreInterpState; @@ -7740,6 +7737,7 @@ TclExecuteByteCode( oldBottomPtr = bottomPtr->prevBottomPtr; atExitPtr = bottomPtr->atExitPtr; + iPtr->cmdFramePtr = bcFramePtr->nextPtr; TclStackFree(interp, bottomPtr); /* free my stack */ if (--codePtr->refCount <= 0) { |