Will Coleda wrote:

Why the change to array.pir here? How was the original way broken?

-  push_eh catch
+  push_eh bad_args
subcommand_proc = find_global "_Tcl\0builtins\0array", subcommand_name
-resume:
   clear_eh

1) The catch branched to resume, which branched to bad_args (not an error, but unneeded) 2) The error was that 'clear_eh' was after the resume label. In the case of an exception the 'clear_eh' clears the *next* exception handler. The 'clear_eh' must only execute, if the exception was not thrown.

As typical exception handler sequence should always look like this:

  push_eh resume
  find_global, find_lex, ... # exception may be thrown here
  clear_eh
resume:

leo

Reply via email to