From 800d37feca2e0ea3343995b3b817b653db2f9034 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Sat, 19 Jul 2025 21:43:50 +0200 Subject: [PATCH] gh-124621: Emscripten: Fix regression in use-after-close error handling (#136837) --- Python/emscripten_syscalls.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Python/emscripten_syscalls.c b/Python/emscripten_syscalls.c index bd5cc07071f2..886262acbc68 100644 --- a/Python/emscripten_syscalls.c +++ b/Python/emscripten_syscalls.c @@ -148,10 +148,17 @@ EM_JS_MACROS(__externref_t, __maybe_fd_read_async, ( size_t iovcnt, __wasi_size_t *nread ), { - var stream = SYSCALLS.getStreamFromFD(fd); if (!WebAssembly.promising) { return null; } + var stream; + try { + stream = SYSCALLS.getStreamFromFD(fd); + } catch (e) { + // If the fd was already closed or never existed, getStreamFromFD() + // raises. We'll let fd_read_orig() handle setting errno. + return null; + } if (!stream.stream_ops.readAsync) { // Not an async device. Fall back to __wasi_fd_read_orig(). return null; -- 2.47.3