diff options
| author | dgp@users.sourceforge.net <dgp> | 2013-07-10 18:02:20 (GMT) |
|---|---|---|
| committer | dgp@users.sourceforge.net <dgp> | 2013-07-10 18:02:20 (GMT) |
| commit | 5385b560957e772939273c2bc7987efc1b8cb1ba (patch) | |
| tree | d704f849b811eb463408d28f75fffe1993131c51 | |
| parent | eabf009a50e1873381fb45572da05b3222d7f9fe (diff) | |
| parent | 2f28e0611c2dab8dff71092feb0354d30f312812 (diff) | |
| download | tcl-5385b560957e772939273c2bc7987efc1b8cb1ba.zip tcl-5385b560957e772939273c2bc7987efc1b8cb1ba.tar.gz tcl-5385b560957e772939273c2bc7987efc1b8cb1ba.tar.bz2 | |
merge trunk
| -rw-r--r-- | generic/tclEnsemble.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c index e0aa0c4..d654bbf 100644 --- a/generic/tclEnsemble.c +++ b/generic/tclEnsemble.c @@ -3049,6 +3049,7 @@ CompileToCompiledCommand( int savedNumCmds = envPtr->numCommands; int savedStackDepth = envPtr->currStackDepth; unsigned savedCodeNext = envPtr->codeNext - envPtr->codeStart; + DefineLineInformation; if (cmdPtr->compileProc == NULL) { return TCL_ERROR; @@ -3097,12 +3098,27 @@ CompileToCompiledCommand( } /* + * Shift the line information arrays to account for different word + * index values. + */ + + mapPtr->loc[eclIndex].line += (depth - 1); + mapPtr->loc[eclIndex].next += (depth - 1); + + /* * Hand off compilation to the subcommand compiler. At last! */ result = cmdPtr->compileProc(interp, &synthetic, cmdPtr, envPtr); /* + * Undo the shift. + */ + + mapPtr->loc[eclIndex].line -= (depth - 1); + mapPtr->loc[eclIndex].next -= (depth - 1); + + /* * If our target fails to compile, revert the number of commands and the * pointer to the place to issue the next instruction. [Bug 3600328] */ |
