only reify a fileno from an integer if the fileno is still open

This commit is contained in:
Alex Shinn 2021-04-18 07:01:10 +09:00
parent d0510bebe6
commit ade90906f9

5
sexp.c
View file

@ -1838,8 +1838,11 @@ static sexp* sexp_fileno_cell(sexp ctx, sexp vec, int fd) {
static sexp sexp_lookup_fileno(sexp ctx, 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); sexp* cell = sexp_fileno_cell(ctx, sexp_global(ctx, SEXP_G_FILE_DESCRIPTORS), fd);
if (cell && sexp_ephemeronp(*cell) if (cell && sexp_ephemeronp(*cell)
&& sexp_fileno_fd(sexp_ephemeron_key(*cell)) == fd) && 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_ephemeron_key(*cell);
}
return SEXP_FALSE; return SEXP_FALSE;
} }