diff options
author | oehhar <harald.oehlmann@elmicron.de> | 2014-10-17 10:00:39 (GMT) |
---|---|---|
committer | oehhar <harald.oehlmann@elmicron.de> | 2014-10-17 10:00:39 (GMT) |
commit | 63acce0c26f00ce8e3d4acb5840db0105f47631d (patch) | |
tree | 239e5dd2f89b978e46ca772b0d367cce522e8377 /generic/tclCompCmds.c | |
parent | d9a8b078d1c03a51b8835666ddd27e0e54a2817d (diff) | |
parent | ceff856085045650b5b10e2d2fea1355ba78e4c4 (diff) | |
download | tcl-63acce0c26f00ce8e3d4acb5840db0105f47631d.zip tcl-63acce0c26f00ce8e3d4acb5840db0105f47631d.tar.gz tcl-63acce0c26f00ce8e3d4acb5840db0105f47631d.tar.bz2 |
Merge trunk
Diffstat (limited to 'generic/tclCompCmds.c')
-rw-r--r-- | generic/tclCompCmds.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/generic/tclCompCmds.c b/generic/tclCompCmds.c index 431f0af..18f4564 100644 --- a/generic/tclCompCmds.c +++ b/generic/tclCompCmds.c @@ -301,7 +301,8 @@ TclCompileArraySetCmd( * a proc, we cannot do a better compile than generic. */ - if (envPtr->procPtr == NULL && !(isDataEven && len == 0)) { + if ((varTokenPtr->type != TCL_TOKEN_SIMPLE_WORD) || + (envPtr->procPtr == NULL && !(isDataEven && len == 0))) { code = TclCompileBasic2ArgCmd(interp, parsePtr, cmdPtr, envPtr); goto done; } @@ -342,8 +343,9 @@ TclCompileArraySetCmd( * a non-local variable: upvar from a local one! This consumes the * variable name that was left at stacktop. */ - - localIndex = AnonymousLocal(envPtr); + + localIndex = TclFindCompiledLocal(varTokenPtr->start, + varTokenPtr->size, 1, envPtr); PushStringLiteral(envPtr, "0"); TclEmitInstInt4(INST_REVERSE, 2, envPtr); TclEmitInstInt4(INST_UPVAR, localIndex, envPtr); @@ -2401,7 +2403,6 @@ TclCompileForCmd( SetLineInformation(2); TclCompileExprWords(interp, testTokenPtr, 1, envPtr); - TclClearNumConversion(envPtr); jumpDist = CurrentOffset(envPtr) - bodyCodeOffset; if (jumpDist > 127) { |