https://github.com/python/cpython/commit/12d2f373b9f70ce43a985ada2832ca31ca66fc20 commit: 12d2f373b9f70ce43a985ada2832ca31ca66fc20 branch: main author: Hood Chatham <[email protected]> committer: ambv <[email protected]> date: 2025-07-22T15:05:26+02:00 summary:
gh-124621: Emscripten: Fix __syscall_ioctl patch (GH-136993) If there is an error, we have to return `-errno` not positive errno. Included in backport of GH-136931: #136988 files: M Python/emscripten_syscalls.c diff --git a/Python/emscripten_syscalls.c b/Python/emscripten_syscalls.c index 404d98d492a655..98ee44276e53e0 100644 --- a/Python/emscripten_syscalls.c +++ b/Python/emscripten_syscalls.c @@ -1,6 +1,10 @@ #include "emscripten.h" #include "stdio.h" +// All system calls: return nonnegative number on success, return -errno on +// failure. Negative results get stored back into errno here: +// https://github.com/emscripten-core/emscripten/blob/main/system/lib/libc/musl/src/internal/syscall_ret.c#L7 + // If we're running in node, report the UID of the user in the native system as // the UID of the user. Since the nodefs will report the uid correctly, if we // don't make getuid report it correctly too we'll see some permission errors. @@ -302,7 +306,7 @@ int __syscall_ioctl(int fd, int request, void* varargs) { int flags = fcntl(fd, F_GETFL, 0); int nonblock = **((int**)varargs); if (flags < 0) { - return errno; + return -errno; } if (nonblock) { flags |= O_NONBLOCK; @@ -311,7 +315,7 @@ int __syscall_ioctl(int fd, int request, void* varargs) { } int res = fcntl(fd, F_SETFL, flags); if (res < 0) { - return errno; + return -errno; } return res; } _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
