From ade90906f9803da43d71773f824f16a95580987c Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 18 Apr 2021 07:01:10 +0900 Subject: [PATCH] only reify a fileno from an integer if the fileno is still open --- sexp.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sexp.c b/sexp.c index f87056d1..a3464dc1 100644 --- a/sexp.c +++ b/sexp.c @@ -1838,8 +1838,11 @@ static sexp* sexp_fileno_cell(sexp ctx, sexp vec, int fd) { static sexp sexp_lookup_fileno(sexp ctx, int fd) { sexp* cell = sexp_fileno_cell(ctx, sexp_global(ctx, SEXP_G_FILE_DESCRIPTORS), fd); if (cell && sexp_ephemeronp(*cell) - && sexp_fileno_fd(sexp_ephemeron_key(*cell)) == fd) - return sexp_ephemeron_key(*cell); + && sexp_filenop(sexp_ephemeron_key(*cell)) + && sexp_fileno_fd(sexp_ephemeron_key(*cell)) == fd) { + if (sexp_fileno_openp(sexp_ephemeron_key(*cell))) + return sexp_ephemeron_key(*cell); + } return SEXP_FALSE; }