From 8f4e07d185ca516548559b9f54c0204a4323fcff Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Mon, 11 Jul 2016 00:40:58 +0900 Subject: [PATCH] automatically close ports on gc --- extlib/benz/gc.c | 4 +--- extlib/benz/port.c | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/extlib/benz/gc.c b/extlib/benz/gc.c index 45d634e7..24ce50b9 100644 --- a/extlib/benz/gc.c +++ b/extlib/benz/gc.c @@ -587,9 +587,7 @@ gc_finalize_object(pic_state *pic, struct object *obj) break; } case PIC_TYPE_PORT: { - if (obj->u.port.file.flag != 0) { - pic_fflush(pic, pic_obj_value(obj)); /* FIXME */ - } + pic_fclose(pic, pic_obj_value(obj)); /* FIXME */ break; } diff --git a/extlib/benz/port.c b/extlib/benz/port.c index 7d62fe3c..6e9bb53c 100644 --- a/extlib/benz/port.c +++ b/extlib/benz/port.c @@ -35,6 +35,8 @@ pic_fclose(pic_state *pic, pic_value port) { struct file *fp = &pic_port_ptr(pic, port)->file; + if (fp->flag == 0) + return 0; pic_fflush(pic, port); fp->flag = 0; if (fp->base != fp->buf)