diff --git a/extlib/benz/load.c b/extlib/benz/load.c index 2f3269d2..cd609afe 100644 --- a/extlib/benz/load.c +++ b/extlib/benz/load.c @@ -22,7 +22,13 @@ pic_load_cstr(pic_state *pic, const char *src) { struct pic_port *port = pic_open_input_string(pic, src); - pic_load_port(pic, port); + pic_try { + pic_load_port(pic, port); + } + pic_catch { + pic_close_port(pic, port); + pic_raise(pic, pic->err); + } pic_close_port(pic, port); } diff --git a/extlib/benz/read.c b/extlib/benz/read.c index 282775e8..e37ca94c 100644 --- a/extlib/benz/read.c +++ b/extlib/benz/read.c @@ -881,7 +881,13 @@ pic_read_cstr(pic_state *pic, const char *str) struct pic_port *port = pic_open_input_string(pic, str); pic_value form; - form = pic_read(pic, port); + pic_try { + form = pic_read(pic, port); + } + pic_catch { + pic_close_port(pic, port); + pic_raise(pic, pic->err); + } pic_close_port(pic, port);