From ab142f522f07965f352bf1f7e56a486696025b59 Mon Sep 17 00:00:00 2001 From: Julian Laval Date: Tue, 11 Aug 2015 09:53:37 +0100 Subject: [PATCH 1/2] Manually closing streams --- src/exec.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/exec.js b/src/exec.js index ffa2bb1..3ef694e 100644 --- a/src/exec.js +++ b/src/exec.js @@ -62,7 +62,9 @@ function execSync(cmd, opts) { "childProcess.stdout.pipe(stdoutStream, {end: false});", "childProcess.stderr.pipe(stdoutStream, {end: false});", "childProcess.stdout.pipe(process.stdout);", - "childProcess.stderr.pipe(process.stderr);" + "childProcess.stderr.pipe(process.stderr);", + "process.stdout.on('end', function(){ stdoutStream.end(); });", + "process.stderr.on('end', function(){ stdoutStream.end(); });" ].join('\n'); fs.writeFileSync(scriptFile, script); From 3d01d643852e812fff13088333f61c91b900c263 Mon Sep 17 00:00:00 2001 From: Julian Laval Date: Tue, 11 Aug 2015 16:50:10 +0100 Subject: [PATCH 2/2] Patched stream closing issue --- src/exec.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/exec.js b/src/exec.js index 3ef694e..d259a9f 100644 --- a/src/exec.js +++ b/src/exec.js @@ -63,8 +63,10 @@ function execSync(cmd, opts) { "childProcess.stderr.pipe(stdoutStream, {end: false});", "childProcess.stdout.pipe(process.stdout);", "childProcess.stderr.pipe(process.stderr);", - "process.stdout.on('end', function(){ stdoutStream.end(); });", - "process.stderr.on('end', function(){ stdoutStream.end(); });" + "var stdoutEnded = false, stderrEnded = false;", + "function tryClosing(){ if(stdoutEnded && stderrEnded){ stdoutStream.end(); } }", + "childProcess.stdout.on('end', function(){ stdoutEnded = true; tryClosing(); });", + "childProcess.stderr.on('end', function(){ stderrEnded = true; tryClosing(); });" ].join('\n'); fs.writeFileSync(scriptFile, script);