diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-09-04 07:59:10 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-09-04 07:59:10 (GMT) |
commit | 1674055d7a5077032b0ae8c68af6e7593420cdfd (patch) | |
tree | 5a2b26b3d8c8cca03a5e60c6b1b87979021cac38 /generic/tclExecute.c | |
parent | a9843e57c2416046ee657b66dc7bd9e4fba46ff3 (diff) | |
parent | fd253d8677ffcef7052c8ac03cbd68c656835a35 (diff) | |
download | tcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.zip tcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.tar.gz tcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.tar.bz2 |
Merge 8.7
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r-- | generic/tclExecute.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c index 6809d3c..99db65c 100644 --- a/generic/tclExecute.c +++ b/generic/tclExecute.c @@ -4254,7 +4254,7 @@ TEBCresume( CoroutineData *corPtr = iPtr->execEnvPtr->corPtr; TclNewObj(objResultPtr); - if (corPtr && !(corPtr->cmdPtr->flags & CMD_IS_DELETED)) { + if (corPtr && !(corPtr->cmdPtr->flags & CMD_DYING)) { Tcl_GetCommandFullName(interp, (Tcl_Command) corPtr->cmdPtr, objResultPtr); } @@ -4314,6 +4314,18 @@ TEBCresume( TRACE(("\"%.30s\" => ", O2S(OBJ_AT_TOS))); cmd = Tcl_GetCommandFromObj(interp, OBJ_AT_TOS); if (cmd == NULL) { + goto instOriginError; + } + origCmd = TclGetOriginalCommand(cmd); + if (origCmd == NULL) { + origCmd = cmd; + } + + TclNewObj(objResultPtr); + Tcl_GetCommandFullName(interp, origCmd, objResultPtr); + if (TclCheckEmptyString(objResultPtr) == TCL_EMPTYSTRING_YES ) { + Tcl_DecrRefCount(objResultPtr); + instOriginError: Tcl_SetObjResult(interp, Tcl_ObjPrintf( "invalid command name \"%s\"", TclGetString(OBJ_AT_TOS))); DECACHE_STACK_INFO(); @@ -4323,12 +4335,6 @@ TEBCresume( TRACE_APPEND(("ERROR: not command\n")); goto gotError; } - origCmd = TclGetOriginalCommand(cmd); - if (origCmd == NULL) { - origCmd = cmd; - } - TclNewObj(objResultPtr); - Tcl_GetCommandFullName(interp, origCmd, objResultPtr); TRACE_APPEND(("\"%.30s\"", O2S(OBJ_AT_TOS))); NEXT_INST_F(1, 1, 1); } |