summaryrefslogtreecommitdiffstats
path: root/generic/tclEnsemble.c
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-09-08 03:29:09 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-09-08 03:29:09 (GMT)
commit227c81511f43db391f21e9b7e7901219dfee00b7 (patch)
treee815efa8acc0da957800726b75db7c03ed46595e /generic/tclEnsemble.c
parentbc8b826f652758b1623dc95c2f9c175c181c8a1e (diff)
parent3da8f74e759e03013e397849f1d550754f6bf059 (diff)
downloadtcl-227c81511f43db391f21e9b7e7901219dfee00b7.zip
tcl-227c81511f43db391f21e9b7e7901219dfee00b7.tar.gz
tcl-227c81511f43db391f21e9b7e7901219dfee00b7.tar.bz2
merge trunk
Diffstat (limited to 'generic/tclEnsemble.c')
-rw-r--r--generic/tclEnsemble.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index de75df3..bd68078 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -3320,7 +3320,7 @@ CompileToInvokedCommand(
Tcl_Token *tokPtr;
Tcl_Obj *objPtr, **words;
char *bytes;
- int length, i, numWords, cmdLit;
+ int length, i, numWords, cmdLit, extraLiteralFlags = LITERAL_CMD_NAME;
DefineLineInformation;
/*
@@ -3340,8 +3340,8 @@ CompileToInvokedCommand(
SetLineInformation(i);
if (tokPtr->type == TCL_TOKEN_SIMPLE_WORD) {
- int literal = TclRegisterNewLiteral(envPtr,
- tokPtr[1].start, tokPtr[1].size);
+ int literal = TclRegisterLiteral(envPtr,
+ tokPtr[1].start, tokPtr[1].size, 0);
if (envPtr->clNext) {
TclContinuationsEnterDerived(
@@ -3362,8 +3362,11 @@ CompileToInvokedCommand(
objPtr = Tcl_NewObj();
Tcl_GetCommandFullName(interp, (Tcl_Command) cmdPtr, objPtr);
- bytes = TclGetStringFromObj(objPtr, &length);
- cmdLit = TclRegisterNewCmdLiteral(envPtr, bytes, length);
+ bytes = Tcl_GetStringFromObj(objPtr, &length);
+ if ((cmdPtr != NULL) && (cmdPtr->flags & CMD_VIA_RESOLVER)) {
+ extraLiteralFlags |= LITERAL_UNSHARED;
+ }
+ cmdLit = TclRegisterLiteral(envPtr, bytes, length, extraLiteralFlags);
TclSetCmdNameObj(interp, TclFetchLiteral(envPtr, cmdLit), cmdPtr);
TclEmitPush(cmdLit, envPtr);
TclDecrRefCount(objPtr);