summaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authormig <mig>2013-01-08 22:46:56 (GMT)
committermig <mig>2013-01-08 22:46:56 (GMT)
commitf90331c772182085a5d1867a87e797727fcc7c59 (patch)
tree2f736419a42f9c27b08b4fd57cd7b69e4186d1f9 /generic
parentbdc266262f41c2dd12f66747403d57ab0916bc42 (diff)
downloadtcl-f90331c772182085a5d1867a87e797727fcc7c59.zip
tcl-f90331c772182085a5d1867a87e797727fcc7c59.tar.gz
tcl-f90331c772182085a5d1867a87e797727fcc7c59.tar.bz2
backing out the TCL_EVAL_REDIRECT changes, orthogonal
Diffstat (limited to 'generic')
-rw-r--r--generic/tcl.h2
-rw-r--r--generic/tclBasic.c10
-rw-r--r--generic/tclEnsemble.c7
-rw-r--r--generic/tclExecute.c4
-rw-r--r--generic/tclInt.h1
-rw-r--r--generic/tclInterp.c3
-rw-r--r--generic/tclNamesp.c4
7 files changed, 18 insertions, 13 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index e64dc26..3003abf 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -1068,8 +1068,6 @@ typedef struct Tcl_DString {
#define TCL_EVAL_INVOKE 0x080000
#define TCL_CANCEL_UNWIND 0x100000
#define TCL_EVAL_NOERR 0x200000
-#define TCL_EVAL_REDIRECT 0x400000
-
/*
* Special freeProc values that may be passed to Tcl_SetResult (see the man
diff --git a/generic/tclBasic.c b/generic/tclBasic.c
index 30a946d..d931297 100644
--- a/generic/tclBasic.c
+++ b/generic/tclBasic.c
@@ -4182,7 +4182,11 @@ TclNREvalObjv(
}
cmdPtrPtr = (Command **) &(callbackPtr->data[0]);
- callbackPtr->data[1] = INT2PTR((flags & TCL_EVAL_REDIRECT) != 0);
+
+ if (iPtr->evalFlags & TCL_EVAL_REDIRECT) {
+ callbackPtr->data[1] = INT2PTR(1);
+ iPtr->evalFlags &= ~TCL_EVAL_REDIRECT;
+ }
callbackPtr->data[2] = INT2PTR(objc);
callbackPtr->data[3] = (ClientData) objv;
@@ -4637,8 +4641,8 @@ TEOV_NotFound(
TclDeferCallbacks(interp);
TclNRAddCallback(interp, TEOV_NotFoundCallback, INT2PTR(handlerObjc),
newObjv, savedNsPtr, NULL);
- return TclNREvalObjv(interp, newObjc, newObjv, (TCL_EVAL_NOERR|TCL_EVAL_REDIRECT),
- NULL);
+ iPtr->evalFlags |= TCL_EVAL_REDIRECT;
+ return TclNREvalObjv(interp, newObjc, newObjv, TCL_EVAL_NOERR, NULL);
}
static int
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 48cac8d..9a2d598 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -1914,8 +1914,8 @@ NsEnsembleImplementationCmdNR(
* Hand off to the target command.
*/
- return TclNREvalObjEx(interp, copyPtr,
- (TCL_EVAL_INVOKE|TCL_EVAL_REDIRECT), NULL,INT_MIN);
+ iPtr->evalFlags |= TCL_EVAL_REDIRECT;
+ return TclNREvalObjEx(interp, copyPtr, TCL_EVAL_INVOKE, NULL,INT_MIN);
}
unknownOrAmbiguousSubcommand:
@@ -2122,7 +2122,8 @@ EnsembleUnknownCallback(
*/
Tcl_Preserve(ensemblePtr);
- result = Tcl_EvalObjv(interp, paramc, paramv, TCL_EVAL_REDIRECT);
+ ((Interp *) interp)->evalFlags |= TCL_EVAL_REDIRECT;
+ result = Tcl_EvalObjv(interp, paramc, paramv, 0);
if ((result == TCL_OK) && (ensemblePtr->flags & ENSEMBLE_DEAD)) {
if (!Tcl_InterpDeleted(interp)) {
Tcl_SetObjResult(interp, Tcl_NewStringObj(
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index 30ffbb8..61ad12d 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -3045,8 +3045,8 @@ TEBCresume(
pc += 6;
TEBC_YIELD();
TclNRAddCallback(interp, TclClearRootEnsemble, NULL,NULL,NULL,NULL);
- return TclNREvalObjEx(interp, objPtr, (TCL_EVAL_INVOKE|TCL_EVAL_REDIRECT),
- NULL, INT_MIN);
+ iPtr->evalFlags |= TCL_EVAL_REDIRECT;
+ return TclNREvalObjEx(interp, objPtr, TCL_EVAL_INVOKE, NULL, INT_MIN);
/*
* -----------------------------------------------------------------
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 0d3b5cc..177765e 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -2246,6 +2246,7 @@ typedef struct InterpList {
#define TCL_ALLOW_EXCEPTIONS 4
#define TCL_EVAL_FILE 2
#define TCL_EVAL_CTX 8
+#define TCL_EVAL_REDIRECT 16
/*
* Flag bits for Interp structures:
diff --git a/generic/tclInterp.c b/generic/tclInterp.c
index 946ca1a..5dd24c7 100644
--- a/generic/tclInterp.c
+++ b/generic/tclInterp.c
@@ -1754,7 +1754,7 @@ AliasNRCmd(
int isRootEnsemble = (iPtr->ensembleRewrite.sourceObjs == NULL);
Tcl_Obj *listPtr;
List *listRep;
- int flags = (TCL_EVAL_INVOKE|TCL_EVAL_REDIRECT);
+ int flags = TCL_EVAL_INVOKE;
/*
* Append the arguments to the command prefix and invoke the command in
@@ -1801,6 +1801,7 @@ AliasNRCmd(
TclDeferCallbacks(interp);
TclNRAddCallback(interp, TclClearRootEnsemble, NULL, NULL, NULL, NULL);
}
+ iPtr->evalFlags |= TCL_EVAL_REDIRECT;
return Tcl_NREvalObj(interp, listPtr, flags);
}
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 48eac9e..d3cd3e1 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -1945,8 +1945,8 @@ InvokeImportedNRCmd(
ImportedCmdData *dataPtr = clientData;
Command *realCmdPtr = dataPtr->realCmdPtr;
- return Tcl_NRCmdSwap(interp, (Tcl_Command) realCmdPtr, objc, objv,
- TCL_EVAL_REDIRECT);
+ ((Interp *) interp)->evalFlags |= TCL_EVAL_REDIRECT;
+ return Tcl_NRCmdSwap(interp, (Tcl_Command) realCmdPtr, objc, objv, 0);
}
static int