From 8b550de06a7a49c89521f8d0655b5ab3d24faa9b Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Fri, 26 Jun 2015 23:45:56 +0900 Subject: [PATCH] [bugfix] port leaks --- extlib/benz/load.c | 8 +++++++- extlib/benz/read.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) 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);