Tcl Source Code

View Ticket
Login
Ticket UUID: 542142
Title: Bug in bcc'ed [return]
Type: Bug Version: None
Submitter: msofer Created on: 2002-04-10 19:29:33
Subsystem: 47. Bytecode Compiler Assigned To: msofer
Priority: 5 Medium Severity:
Status: Closed Last Modified: 2002-08-14 03:35:30
Resolution: Fixed Closed By: msofer
    Closed on: 2002-08-13 20:35:30
Description:
Andreas Kupries reports:

I believe that I have found a bug in the bytecode
compiler. Below a minimal example of the difference
between 8.3.4 and 8.4 CVS head of last friday (April 5).

What happens is that the "return" in the catch is not
catched but stops execution of the surounding procedure.


[andreask@pliers pro_ng]$ cat catch_test
# -*- tcl -*-

proc foo {} {
    set fail [catch {
        return
    }] ; # {}

    return 2
}

puts "foo = [foo]"
[andreask@pliers pro_ng]$
[andreask@pliers pro_ng]$ ./install/834/bin/tclsh8.3
catch_test
foo = 2
[andreask@pliers pro_ng]$
[andreask@pliers pro_ng]$
[andreask@pliers pro_ng]$ ./install/84cvs/bin/tclsh8.4
catch_test
foo =
User Comments: msofer added on 2002-04-16 00:34:00:
Logged In: YES 
user_id=148712

Patch committed: bytecodes now check for a possible [catch]
before returning. Before this, the bytecompiled [return] was
uncatchable.

msofer added on 2002-04-11 03:12:32:

File Added - 20934: bcCatch.patch

Logged In: YES 
user_id=148712

The patch attached solves the issue.

Attachments: