#5103 info frame gives wrong line number in catch

open
nobody
None
5
2012-08-28
2012-08-28
Will Duquette
No

This occurs in Tcl 8.5.10 on Windows 7, Tcl 8.5.10. The following script (also attached)

====================================================
set script {
puts "line 2: [info frame 0]"
set a 5 ;# End line comment
;# End line comment with unneeded semi-colon
puts "line 5: [info frame 0]"
}

catch $script

gives the following output:

=====================================================
$ tclsh bug2.tcl
line 2: type eval line 2 cmd {info frame 0} level 0
line 5: type eval line 4 cmd {info frame 0} level 0
=====================================================

The line number reported by the second [info frame] call is off by one line number.

The culprit appears to be the line just previous, which begins with " ;#". The semi-colon is unnecessary, and if it is removed, the line number is reported correctly.

Subsequent occurrences of the same pattern will cause the offset to increment.

Discussion

  • Will Duquette
    Will Duquette
    2012-08-28

    Script demonstrating the bug

     
    Attachments
  • Don Porter
    Don Porter
    2012-08-30

    Worth checking how this is (or isn't)
    related to 2935779