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; }
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: