Skip to content

Commit bbac4fe

Browse files
committed
fix: apply forced stdio destroy for abort flow only
1 parent cd32992 commit bbac4fe

File tree

3 files changed

+18
-6
lines changed

3 files changed

+18
-6
lines changed

src/main/ts/spawn.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ export const invoke = (c: TSpawnCtxNormalized): TSpawnCtxNormalized => {
216216
toggleListeners('on', c.ee, c.on)
217217

218218
let error: any = null
219+
let aborted = false
219220
const opts = buildSpawnOpts(c)
220221
const child = c.spawn(c.cmd, c.args, opts)
221222
const onAbort = (event: any) => {
@@ -227,6 +228,7 @@ export const invoke = (c: TSpawnCtxNormalized): TSpawnCtxNormalized => {
227228
child.kill()
228229
}
229230
}
231+
aborted = true
230232
c.ee.emit('abort', event, c)
231233
}
232234
c.child = child
@@ -252,8 +254,10 @@ export const invoke = (c: TSpawnCtxNormalized): TSpawnCtxNormalized => {
252254
c.ee.emit('err', error, c)
253255
})
254256
.once('exit', () => {
255-
child.stdout?.destroy()
256-
child.stderr?.destroy()
257+
if (aborted) {
258+
child.stdout?.destroy()
259+
child.stderr?.destroy()
260+
}
257261
})
258262
.once('close', (status, signal) => {
259263
c.fulfilled = {

target/cjs/spawn.cjs

+6-2
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ var invoke = (c) => {
163163
var _a2, _b2, _c;
164164
toggleListeners("on", c.ee, c.on);
165165
let error = null;
166+
let aborted = false;
166167
const opts = buildSpawnOpts(c);
167168
const child = c.spawn(c.cmd, c.args, opts);
168169
const onAbort = (event) => {
@@ -173,6 +174,7 @@ var invoke = (c) => {
173174
child.kill();
174175
}
175176
}
177+
aborted = true;
176178
c.ee.emit("abort", event, c);
177179
};
178180
c.child = child;
@@ -194,8 +196,10 @@ var invoke = (c) => {
194196
c.ee.emit("err", error, c);
195197
}).once("exit", () => {
196198
var _a3, _b3;
197-
(_a3 = child.stdout) == null ? void 0 : _a3.destroy();
198-
(_b3 = child.stderr) == null ? void 0 : _b3.destroy();
199+
if (aborted) {
200+
(_a3 = child.stdout) == null ? void 0 : _a3.destroy();
201+
(_b3 = child.stderr) == null ? void 0 : _b3.destroy();
202+
}
199203
}).once("close", (status, signal) => {
200204
var _a3;
201205
c.fulfilled = {

target/esm/spawn.mjs

+6-2
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ var invoke = (c) => {
142142
var _a2, _b2, _c;
143143
toggleListeners("on", c.ee, c.on);
144144
let error = null;
145+
let aborted = false;
145146
const opts = buildSpawnOpts(c);
146147
const child = c.spawn(c.cmd, c.args, opts);
147148
const onAbort = (event) => {
@@ -152,6 +153,7 @@ var invoke = (c) => {
152153
child.kill();
153154
}
154155
}
156+
aborted = true;
155157
c.ee.emit("abort", event, c);
156158
};
157159
c.child = child;
@@ -173,8 +175,10 @@ var invoke = (c) => {
173175
c.ee.emit("err", error, c);
174176
}).once("exit", () => {
175177
var _a3, _b3;
176-
(_a3 = child.stdout) == null ? void 0 : _a3.destroy();
177-
(_b3 = child.stderr) == null ? void 0 : _b3.destroy();
178+
if (aborted) {
179+
(_a3 = child.stdout) == null ? void 0 : _a3.destroy();
180+
(_b3 = child.stderr) == null ? void 0 : _b3.destroy();
181+
}
178182
}).once("close", (status, signal) => {
179183
var _a3;
180184
c.fulfilled = {

0 commit comments

Comments
 (0)