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)