Using a --enable-symbols=all build of either the trunk,
or the 8.6.0 release:
$ cat demo.tcl
apply {{} {
dict for {a b} {c d} {
dict for {e f} {g h} {
return 5
}
}
}}
$ make shell SCRIPT=demo.tcl
...
Bad stack top 4 at pc 104 in TclNRExecuteByteCode (min 0, max 3)
executing dict for {e f} {g h} {
return 5
}
TclNRExecuteByteCode execution failure: bad stack top
make: *** [shell] Abort trap
Here's another demo of the issue without the complication
of nesting loops:
apply {{} {
dict for {a b} {c d} {
apply {{} {return -level 2 5}}
}
}}
Moving the BEGIN_CATCH before the DICT_FIRST appears
to be an effective fix. Committing to trunk.