From: Hood Chatham Date: Sat, 19 Jul 2025 19:43:50 +0000 (+0200) Subject: gh-124621: Emscripten: Fix regression in use-after-close error handling (#136837) X-Git-Tag: v3.15.0a1~928 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=800d37feca2e0ea3343995b3b817b653db2f9034;p=thirdparty%2FPython%2Fcpython.git gh-124621: Emscripten: Fix regression in use-after-close error handling (#136837) --- 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;