summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-04 07:59:10 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-09-04 07:59:10 (GMT)
commit1674055d7a5077032b0ae8c68af6e7593420cdfd (patch)
tree5a2b26b3d8c8cca03a5e60c6b1b87979021cac38 /generic/tclExecute.c
parenta9843e57c2416046ee657b66dc7bd9e4fba46ff3 (diff)
parentfd253d8677ffcef7052c8ac03cbd68c656835a35 (diff)
downloadtcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.zip
tcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.tar.gz
tcl-1674055d7a5077032b0ae8c68af6e7593420cdfd.tar.bz2
Merge 8.7
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c20
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);
}