Tweaked arcane use of setjmp -- it's been a decade since I last saw this, and there is no corresponding longjmp() call anywhere else in the codebase...