diff options
author | mig <mig> | 2013-01-08 22:46:56 (GMT) |
---|---|---|
committer | mig <mig> | 2013-01-08 22:46:56 (GMT) |
commit | f90331c772182085a5d1867a87e797727fcc7c59 (patch) | |
tree | 2f736419a42f9c27b08b4fd57cd7b69e4186d1f9 /generic | |
parent | bdc266262f41c2dd12f66747403d57ab0916bc42 (diff) | |
download | tcl-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.h | 2 | ||||
-rw-r--r-- | generic/tclBasic.c | 10 | ||||
-rw-r--r-- | generic/tclEnsemble.c | 7 | ||||
-rw-r--r-- | generic/tclExecute.c | 4 | ||||
-rw-r--r-- | generic/tclInt.h | 1 | ||||
-rw-r--r-- | generic/tclInterp.c | 3 | ||||
-rw-r--r-- | generic/tclNamesp.c | 4 |
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 |