Thanks. I had started writing something similar after digging into the source again.
Bill
JMP_BUF recovery; if(SETJMP(recovery)) { /* an exception was thrown, value in throw_value */ } else { apply_svalue(...); /* no exception was thrown */ } UNSETJMP(recovery);