From ce6dd55ea5003e20647781a374980965ad0731e5 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Wed, 2 Mar 2016 04:34:43 +0900 Subject: [PATCH] segv if an error is raised when no exception handler is registered --- extlib/benz/error.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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)); }