Skip to content

Commit d424e93

Browse files
Try to fix memory leak issue #1
1 parent 6e2ea2c commit d424e93

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

utils.js

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,26 +16,32 @@ function run(cmd, opts) {
1616
}
1717
}, opts);
1818

19-
var child;
20-
var parts = shellQuote.parse(cmd);
21-
try {
22-
child = childProcess.spawn(_.head(parts), _.tail(parts), {
23-
cwd: opts.cwd,
24-
stdio: opts.pipe ? "inherit" : null
25-
});
26-
} catch (e) {
27-
return Promise.reject(e);
28-
}
29-
opts.callback(child);
30-
3119
return new Promise(function(resolve, reject) {
32-
child.on('error', function(err) {
20+
var child;
21+
var parts = shellQuote.parse(cmd);
22+
try {
23+
child = childProcess.spawn(_.head(parts), _.tail(parts), {
24+
cwd: opts.cwd,
25+
stdio: opts.pipe ? 'inherit' : null
26+
});
27+
} catch (e) {
28+
return Promise.reject(e);
29+
}
30+
31+
opts.callback(child);
32+
33+
function errorHandler(err) {
34+
child.removeListener('close', closeHandler);
3335
reject(err);
34-
});
36+
}
3537

36-
child.on('close', function(exitCode) {
38+
function closeHandler(exitCode) {
39+
child.removeListener('error', errorHandler);
3740
resolve(exitCode);
38-
});
41+
}
42+
43+
child.once('error', errorHandler);
44+
child.once('close', closeHandler);
3945
});
4046
}
4147

0 commit comments

Comments
 (0)