summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2016-06-16 16:59:09 (GMT)
committerdgp <dgp@users.sourceforge.net>2016-06-16 16:59:09 (GMT)
commitac2ab0075f3bd2da55b9eb003f12455ca981df21 (patch)
treed7b91cce5052518604586c81a15019913ed3e301
parent38f75a878db647a16f5198d88806af3e2cc1a9dd (diff)
downloadtcl-bug_4b61afd660.zip
tcl-bug_4b61afd660.tar.gz
tcl-bug_4b61afd660.tar.bz2
Improve fix and add test.bug_4b61afd660
-rw-r--r--generic/tclCompile.c7
-rw-r--r--tests/info.test17
2 files changed, 19 insertions, 5 deletions
diff --git a/generic/tclCompile.c b/generic/tclCompile.c
index 8cdd9d2..31e69ad 100644
--- a/generic/tclCompile.c
+++ b/generic/tclCompile.c
@@ -2602,12 +2602,9 @@ EnterCmdWordData(
TclAdvanceLines (&wordLine, last, tokenPtr->start);
TclAdvanceContinuations (&wordLine, &wordNext,
tokenPtr->start - envPtr->source);
-#if 0
wwlines[wordIdx] =
- (TclWordKnownAtCompileTime(tokenPtr, NULL) ? wordLine : -1);
-#else
- wwlines[wordIdx] = wordLine;
-#endif
+ ((wordIdx == 0) || TclWordKnownAtCompileTime(tokenPtr, NULL))
+ ? wordLine : -1;
ePtr->line[wordIdx] = wordLine;
ePtr->next[wordIdx] = wordNext;
last = tokenPtr->start;
diff --git a/tests/info.test b/tests/info.test
index 937da8c..d30bf9a 100644
--- a/tests/info.test
+++ b/tests/info.test
@@ -1818,6 +1818,23 @@ test info-38.2 {location information for uplevel, dl, direct-literal} -match glo
* {type source line 1814 file info.test cmd etrace level 1}
* {type source line 1812 file info.test cmd uplevel\\ \\\\ level 1}} -cleanup {interp delete sub}
+test info-39.0 {Bug 4b61afd660} -setup {
+ proc probe {} {
+ return [dict get [info frame -1] line]
+ }
+ set body {
+ set cmd probe
+ $cmd
+ }
+ proc demo {} $body
+} -body {
+ demo
+} -cleanup {
+ unset -nocomplain body
+ rename demo {}
+ rename probe {}
+} -result 3
+
# cleanup
catch {namespace delete test_ns_info1 test_ns_info2}
::tcltest::cleanupTests