I just fixed this and will commit in a moment.
A word to the novice Tcl programmer.
Tcl evaluates all "[]" expressions contained in a command string before calling the command itself. Therefore the use of "catch" as used in the code snippet below does not guard against the execution of the caught expr later in the same expression:
set bin [ad_decode [catch {exec which aspell}] \
0 [exec which aspell] \
[ad_decode [catch {exec which ispell}] \
0 [exec which ispell] \
""]]
This code fails if aspell is not found by exec. I've removed the cleverness in favor of cascading "if" statements which allow for the explicit control over when the various expressions are executed.