From 5138ab4a8ccb50c85a5c85b2c63d09ce4f69b337 Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Sun, 28 Jun 2015 04:47:41 +0900 Subject: [PATCH] save arena --- extlib/benz/read.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/extlib/benz/read.c b/extlib/benz/read.c index e37ca94c..d82eebf9 100644 --- a/extlib/benz/read.c +++ b/extlib/benz/read.c @@ -855,6 +855,7 @@ pic_reader_destroy(pic_state *pic) pic_value pic_read(pic_state *pic, struct pic_port *port) { + size_t ai = pic_gc_arena_preserve(pic); pic_value val; int c = next(pic, port); @@ -869,10 +870,12 @@ pic_read(pic_state *pic, struct pic_port *port) if (pic_invalid_p(val)) { c = next(pic, port); + pic_gc_arena_restore(pic, ai); goto retry; } - return val; + pic_gc_arena_restore(pic, ai); + return pic_gc_protect(pic, val); } pic_value