summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/os390-syscalls.c
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2019-12-03 22:19:16 -0500
committercjihrig <cjihrig@gmail.com>2019-12-06 11:14:59 -0500
commit5d2944d7b65840766bd8c4efef0af4e2680c0166 (patch)
tree76d1bd0017ca8667aeb34767fec599cdf414121d /deps/uv/src/unix/os390-syscalls.c
parent09ea00b0c117d219ec7017e7125601e9e26f84b9 (diff)
downloadandroid-node-v8-5d2944d7b65840766bd8c4efef0af4e2680c0166.tar.gz
android-node-v8-5d2944d7b65840766bd8c4efef0af4e2680c0166.tar.bz2
android-node-v8-5d2944d7b65840766bd8c4efef0af4e2680c0166.zip
deps: upgrade to libuv 1.34.0
Notable changes: - Fix handling of large files in uv_fs_copyfile(). Fixes: https://github.com/nodejs/node/issues/30085 - Fix Android build errors. - uv_sleep() has been added. - uv_interface_addresses() IPv6 netmask support has been fixed. Fixes: https://github.com/nodejs/node/issues/30504 - uv_fs_mkstemp() has been added. PR-URL: https://github.com/nodejs/node/pull/30783 Fixes: https://github.com/nodejs/node/issues/30085 Fixes: https://github.com/nodejs/node/issues/30504 Reviewed-By: Tobias Nießen <tniessen@tnie.de> Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/uv/src/unix/os390-syscalls.c')
-rw-r--r--deps/uv/src/unix/os390-syscalls.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/deps/uv/src/unix/os390-syscalls.c b/deps/uv/src/unix/os390-syscalls.c
index 1040d66979..d9abdebaee 100644
--- a/deps/uv/src/unix/os390-syscalls.c
+++ b/deps/uv/src/unix/os390-syscalls.c
@@ -23,11 +23,11 @@
#include "os390-syscalls.h"
#include <errno.h>
#include <stdlib.h>
-#include <assert.h>
#include <search.h>
#include <termios.h>
#include <sys/msg.h>
+#define CW_INTRPT 1
#define CW_CONDVAR 32
#pragma linkage(BPX4CTW, OS)
@@ -350,27 +350,34 @@ int nanosleep(const struct timespec* req, struct timespec* rem) {
unsigned secrem;
unsigned nanorem;
int rv;
- int rc;
+ int err;
int rsn;
nano = (int)req->tv_nsec;
seconds = req->tv_sec;
- events = CW_CONDVAR;
+ events = CW_CONDVAR | CW_INTRPT;
+ secrem = 0;
+ nanorem = 0;
#if defined(_LP64)
- BPX4CTW(&seconds, &nano, &events, &secrem, &nanorem, &rv, &rc, &rsn);
+ BPX4CTW(&seconds, &nano, &events, &secrem, &nanorem, &rv, &err, &rsn);
#else
- BPX1CTW(&seconds, &nano, &events, &secrem, &nanorem, &rv, &rc, &rsn);
+ BPX1CTW(&seconds, &nano, &events, &secrem, &nanorem, &rv, &err, &rsn);
#endif
- assert(rv == -1 && errno == EAGAIN);
+ /* Don't clobber errno unless BPX1CTW/BPX4CTW errored.
+ * Don't leak EAGAIN, that just means the timeout expired.
+ */
+ if (rv == -1)
+ if (err != EAGAIN)
+ errno = err;
- if(rem != NULL) {
+ if (rem != NULL && (rv == 0 || err == EINTR || err == EAGAIN)) {
rem->tv_nsec = nanorem;
rem->tv_sec = secrem;
}
- return 0;
+ return rv;
}