From ba187ed4aeb6b7a1f5817a6f086e77958a05a5ff Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 12 Jul 2009 20:40:00 +0900 Subject: [PATCH] Reverting order of close and free for closing Linux memstreams. Freeing first causes a segfault when closing a string port. This closes issue 3: http://code.google.com/p/chibi-scheme/issues/detail?id=3 --- eval.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eval.c b/eval.c index 61d2a2b7..644ee22b 100644 --- a/eval.c +++ b/eval.c @@ -1969,10 +1969,10 @@ static sexp sexp_close_port (sexp ctx, sexp port) { return sexp_type_exception(ctx, "not a port", port); if (! sexp_port_openp(port)) return sexp_user_exception(ctx, SEXP_FALSE, "port already closed", port); + if (sexp_port_stream(port)) + fclose(sexp_port_stream(port)); if (sexp_port_buf(port)) free(sexp_port_buf(port)); - if (sexp_port_stream(port)) - fclose(sexp_port_stream(port)); sexp_port_openp(port) = 0; return SEXP_VOID; }