Subject: Fix for [86fb5ea28e]. Test will eventually merge in from tip280-test-coverage.

From: dgp <[email-masked]>
Date: Wed, 10 Jul 2013 17:58:45 +0000

---
 generic/tclEnsemble.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/generic/tclEnsemble.c b/generic/tclEnsemble.c
index 813e056..a718d0e 100644
--- a/generic/tclEnsemble.c
+++ b/generic/tclEnsemble.c
@@ -3059,6 +3059,7 @@ CompileToCompiledCommand(
     int savedNumCmds = envPtr->numCommands;
     int savedStackDepth = envPtr->currStackDepth;
     unsigned savedCodeNext = envPtr->codeNext - envPtr->codeStart;
+    DefineLineInformation;
 
     if (cmdPtr->compileProc == NULL) {
 	return TCL_ERROR;
@@ -3107,12 +3108,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]
      */
-- 
cgit v0.12