diff options
author | pooryorick <com.digitalsmarties@pooryorick.com> | 2016-10-03 16:55:56 (GMT) |
---|---|---|
committer | pooryorick <com.digitalsmarties@pooryorick.com> | 2016-10-03 16:55:56 (GMT) |
commit | 8826c4b5dc048432fbed200da55eef080c75b32c (patch) | |
tree | 630235c89d7d920a856d6b575a4c28ec3f917fdb /generic/tclCompile.c | |
parent | 79732cb7bfe403d288455d98bc70bf3c73e09e8f (diff) | |
parent | 2735ae8a8f3cd9a14778858d17f195bf54fc3303 (diff) | |
download | tcl-8826c4b5dc048432fbed200da55eef080c75b32c.zip tcl-8826c4b5dc048432fbed200da55eef080c75b32c.tar.gz tcl-8826c4b5dc048432fbed200da55eef080c75b32c.tar.bz2 |
merge trunk
Diffstat (limited to 'generic/tclCompile.c')
-rw-r--r-- | generic/tclCompile.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c index 0024f1e..c588731 100644 --- a/generic/tclCompile.c +++ b/generic/tclCompile.c @@ -1792,9 +1792,17 @@ CompileCmdLiteral( CompileEnv *envPtr) { int numBytes; - const char *bytes = TclGetStringFromObj(cmdObj, &numBytes); - int cmdLitIdx = TclRegisterNewCmdLiteral(envPtr, bytes, numBytes); - Command *cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, cmdObj); + const char *bytes; + Command *cmdPtr; + int cmdLitIdx, extraLiteralFlags = LITERAL_CMD_NAME; + + cmdPtr = (Command *) Tcl_GetCommandFromObj(interp, cmdObj); + if ((cmdPtr != NULL) && (cmdPtr->flags & CMD_VIA_RESOLVER)) { + extraLiteralFlags |= LITERAL_UNSHARED; + } + + bytes = Tcl_GetStringFromObj(cmdObj, &numBytes); + cmdLitIdx = TclRegisterLiteral(envPtr, bytes, numBytes, extraLiteralFlags); if (cmdPtr) { TclSetCmdNameObj(interp, TclFetchLiteral(envPtr, cmdLitIdx), cmdPtr); @@ -1829,8 +1837,8 @@ TclCompileInvocation( continue; } - objIdx = TclRegisterNewLiteral(envPtr, - tokenPtr[1].start, tokenPtr[1].size); + objIdx = TclRegisterLiteral(envPtr, + tokenPtr[1].start, tokenPtr[1].size, 0); if (envPtr->clNext) { TclContinuationsEnterDerived(TclFetchLiteral(envPtr, objIdx), tokenPtr[1].start - envPtr->source, envPtr->clNext); @@ -1879,8 +1887,8 @@ CompileExpanded( continue; } - objIdx = TclRegisterNewLiteral(envPtr, - tokenPtr[1].start, tokenPtr[1].size); + objIdx = TclRegisterLiteral(envPtr, + tokenPtr[1].start, tokenPtr[1].size, 0); if (envPtr->clNext) { TclContinuationsEnterDerived(TclFetchLiteral(envPtr, objIdx), tokenPtr[1].start - envPtr->source, envPtr->clNext); |