summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2008-09-10 13:23:47 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2008-09-10 13:23:47 (GMT)
commitb2d9ed24c8428b9c2230515bf13aa76dcfdb607f (patch)
tree9ae25b29e219c9f6bc5be5c46c47d1f560762124 /generic
parenteb97dfe76d6d46cf1b3c040b8a907305e5300afe (diff)
downloadtcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.zip
tcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.tar.gz
tcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.tar.bz2
* tests/nre.test: add missing constraints; enable test of foreach
recursion. * generic/tclBasic.c: * generic/tclCompile.h: * generic/tclExecute.c (INST_EVAL_STK): fix for [Bug 2102930], wrong numLevels when evaling a canonical list.
Diffstat (limited to 'generic')
-rw-r--r--generic/tclBasic.c5
-rw-r--r--generic/tclCompile.h3
-rw-r--r--generic/tclExecute.c9
3 files changed, 12 insertions, 5 deletions
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 68700c8..1f80d43 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -16,7 +16,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclBasic.c,v 1.365 2008/08/26 22:37:02 msofer Exp $
+ * RCS: @(#) $Id: tclBasic.c,v 1.366 2008/09/10 13:24:00 msofer Exp $
*/
#include "tclInt.h"
@@ -134,7 +134,6 @@ static Tcl_NRPostProc TEOV_Error;
static Tcl_NRPostProc TEOEx_ListCallback;
static Tcl_NRPostProc TEOEx_ByteCodeCallback;
-static Tcl_NRPostProc NRCommand;
static Tcl_NRPostProc NRRunObjProc;
static Tcl_NRPostProc AtProcExitCleanup;
@@ -4228,7 +4227,7 @@ TclNRRunCallbacks(
return result;
}
-static int
+int
NRCommand(
ClientData data[],
Tcl_Interp *interp,
diff --git a/generic/tclCompile.h b/generic/tclCompile.h
index c7539ba..ab8eef8 100644
--- a/generic/tclCompile.h
+++ b/generic/tclCompile.h
@@ -9,7 +9,7 @@
* See the file "license.terms" for information on usage and redistribution of
* this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tclCompile.h,v 1.106 2008/08/17 19:37:11 msofer Exp $
+ * RCS: @(#) $Id: tclCompile.h,v 1.107 2008/09/10 13:24:09 msofer Exp $
*/
#ifndef _TCLCOMPILATION
@@ -838,6 +838,7 @@ typedef struct {
*/
MODULE_SCOPE Tcl_NRPostProc NRCallTEBC;
+MODULE_SCOPE Tcl_NRPostProc NRCommand;
#define TCL_NR_BC_TYPE 0
#define TCL_NR_ATEXIT_TYPE 1
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 326cc18..ba7bd62 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.410 2008/09/08 03:55:21 msofer Exp $
+ * RCS: @(#) $Id: tclExecute.c,v 1.411 2008/09/10 13:24:12 msofer Exp $
*/
#include "tclInt.h"
@@ -2700,6 +2700,13 @@ TclExecuteByteCode(
}
objc = listRepPtr->elemCount;
objv = &listRepPtr->elements;
+
+ /*
+ * Fix for [Bug 2102930]
+ */
+
+ iPtr->numLevels++;
+ Tcl_NRAddCallback(interp, NRCommand, NULL, NULL, NULL, NULL);
goto doInvocationFromEval;
}
}