diff --git a/extlib/benz/error.c b/extlib/benz/error.c index ee3fc0a9..bc2313cd 100644 --- a/extlib/benz/error.c +++ b/extlib/benz/error.c @@ -172,6 +172,10 @@ pic_raise(pic_state *pic, pic_value err) stack = pic_call(pic, exc, 0); + if (pic_nil_p(pic, stack)) { + pic_panic(pic, "no exception handler"); + } + pic_dynamic_bind(pic, exc, pic_cdr(pic, stack), pic_lambda(pic, raise, 2, pic_car(pic, stack), err)); PIC_UNREACHABLE(); @@ -192,6 +196,10 @@ pic_raise_continuable(pic_state *pic, pic_value err) stack = pic_call(pic, exc, 0); + if (pic_nil_p(pic, stack)) { + pic_panic(pic, "no exception handler"); + } + return pic_dynamic_bind(pic, exc, pic_cdr(pic, stack), pic_lambda(pic, raise_continuable, 2, pic_car(pic, stack), err)); }