diff options
author | dgp <dgp@users.sourceforge.net> | 2020-09-20 16:06:03 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2020-09-20 16:06:03 (GMT) |
commit | a9fc439a359b52924df081ed1215e11ae2237809 (patch) | |
tree | 608278808ac92b7ca76fbf3be75293e82e878203 /generic/tclProc.c | |
parent | 02661954797d7eff2d51d1d64f5a9c772dae1bd7 (diff) | |
parent | 7f917c56f757a3a2724bc9f477a6d5c0395bcb57 (diff) | |
download | tcl-a9fc439a359b52924df081ed1215e11ae2237809.zip tcl-a9fc439a359b52924df081ed1215e11ae2237809.tar.gz tcl-a9fc439a359b52924df081ed1215e11ae2237809.tar.bz2 |
merge 8.7
Diffstat (limited to 'generic/tclProc.c')
-rw-r--r-- | generic/tclProc.c | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/generic/tclProc.c b/generic/tclProc.c index a7d3f48..a97fa6c 100644 --- a/generic/tclProc.c +++ b/generic/tclProc.c @@ -905,7 +905,6 @@ TclNRUplevelObjCmd( Interp *iPtr = (Interp *) interp; CmdFrame *invoker = NULL; int word = 0; - int havelevel = 0; int result; CallFrame *savedVarFramePtr, *framePtr; Tcl_Obj *objPtr; @@ -919,7 +918,7 @@ TclNRUplevelObjCmd( uplevelSyntax: Tcl_WrongNumArgs(interp, 1, objv, "?level? command ?arg ...?"); return TCL_ERROR; - } else if (objc == 2) { + } else if (!TclHasStringRep(objv[1]) && objc == 2) { int status ,llength; status = Tcl_ListObjLength(interp, objv[1], &llength); if (status == TCL_OK && llength > 1) { @@ -929,28 +928,27 @@ TclNRUplevelObjCmd( if (result == -1) { return TCL_ERROR; } - havelevel = 1; objc -= 1; objv += 1; + goto havelevel; } } - if (!havelevel) { - /* - * Find the level to use for executing the command. - */ + /* + * Find the level to use for executing the command. + */ - result = TclObjGetFrame(interp, objv[1], &framePtr); - if (result == -1) { - return TCL_ERROR; - } - objc -= result + 1; - if (objc == 0) { - goto uplevelSyntax; - } - objv += result + 1; + result = TclObjGetFrame(interp, objv[1], &framePtr); + if (result == -1) { + return TCL_ERROR; + } + objc -= result + 1; + if (objc == 0) { + goto uplevelSyntax; } + objv += result + 1; + havelevel: /* * Modify the interpreter state to execute in the given frame. |