summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--generic/tclExecute.c12
2 files changed, 9 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index bc7e8b0..690a0d8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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) {