]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-124621: Emscripten: Fix regression in use-after-close error handling (#136837)
authorHood Chatham <roberthoodchatham@gmail.com>
Sat, 19 Jul 2025 19:43:50 +0000 (21:43 +0200)
committerGitHub <noreply@github.com>
Sat, 19 Jul 2025 19:43:50 +0000 (21:43 +0200)
Python/emscripten_syscalls.c

index bd5cc07071f20ec3c85ba6894a21be52f8331a43..886262acbc68100fac229f84666670d38450ec8c 100644 (file)
@@ -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;