summaryrefslogtreecommitdiff
path: root/lib/internal/child_process.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/child_process.js')
-rw-r--r--lib/internal/child_process.js7
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/internal/child_process.js b/lib/internal/child_process.js
index 4e6a25a8a3..a0f083d8de 100644
--- a/lib/internal/child_process.js
+++ b/lib/internal/child_process.js
@@ -375,12 +375,11 @@ ChildProcess.prototype.spawn = function(options) {
err === UV_ENFILE ||
err === UV_ENOENT) {
process.nextTick(onErrorNT, this, err);
+
// There is no point in continuing when we've hit EMFILE or ENFILE
// because we won't be able to set up the stdio file descriptors.
- // It's kind of silly that the de facto spec for ENOENT (the test suite)
- // mandates that stdio _is_ set up, even if there is no process on the
- // receiving end, but it is what it is.
- if (err !== UV_ENOENT) return err;
+ if (err === UV_EMFILE || err === UV_ENFILE)
+ return err;
} else if (err) {
// Close all opened fds on error
for (i = 0; i < stdio.length; i++) {