summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/process.c
diff options
context:
space:
mode:
authorcjihrig <cjihrig@gmail.com>2017-11-30 21:41:16 -0500
committercjihrig <cjihrig@gmail.com>2017-12-01 09:01:04 -0500
commit5ebfaa88917ebcef1dd69e31e40014ce237c60e2 (patch)
treec3b3e08a1b9a461252992e29f70cbabc26bbd4b3 /deps/uv/src/unix/process.c
parent3327ce0dd2f1d7d6255deb13314fdd7e7a2fb8aa (diff)
downloadandroid-node-v8-5ebfaa88917ebcef1dd69e31e40014ce237c60e2.tar.gz
android-node-v8-5ebfaa88917ebcef1dd69e31e40014ce237c60e2.tar.bz2
android-node-v8-5ebfaa88917ebcef1dd69e31e40014ce237c60e2.zip
deps: upgrade libuv to 1.18.0
PR-URL: https://github.com/nodejs/node/pull/17282 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Diffstat (limited to 'deps/uv/src/unix/process.c')
-rw-r--r--deps/uv/src/unix/process.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/deps/uv/src/unix/process.c b/deps/uv/src/unix/process.c
index 80b9686ec8..9842710d0e 100644
--- a/deps/uv/src/unix/process.c
+++ b/deps/uv/src/unix/process.c
@@ -419,6 +419,7 @@ int uv_spawn(uv_loop_t* loop,
return -ENOSYS;
#else
int signal_pipe[2] = { -1, -1 };
+ int pipes_storage[8][2];
int (*pipes)[2];
int stdio_count;
ssize_t r;
@@ -443,7 +444,10 @@ int uv_spawn(uv_loop_t* loop,
stdio_count = 3;
err = -ENOMEM;
- pipes = uv__malloc(stdio_count * sizeof(*pipes));
+ pipes = pipes_storage;
+ if (stdio_count > (int) ARRAY_SIZE(pipes_storage))
+ pipes = uv__malloc(stdio_count * sizeof(*pipes));
+
if (pipes == NULL)
goto error;
@@ -548,7 +552,9 @@ int uv_spawn(uv_loop_t* loop,
process->pid = pid;
process->exit_cb = options->exit_cb;
- uv__free(pipes);
+ if (pipes != pipes_storage)
+ uv__free(pipes);
+
return exec_errorno;
error:
@@ -562,7 +568,9 @@ error:
if (pipes[i][1] != -1)
uv__close_nocheckstdio(pipes[i][1]);
}
- uv__free(pipes);
+
+ if (pipes != pipes_storage)
+ uv__free(pipes);
}
return err;