Skip to content

Commit 85c6fcd

Browse files
committed
stream: avoid writing to writable
A remainder from a previous refactoring. Refs: #31197 PR-URL: #31805 Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
1 parent 5bef2cc commit 85c6fcd

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

lib/_stream_writable.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,6 @@ function endWritable(stream, state, cb) {
687687
onFinished(stream, state, cb);
688688
}
689689
state.ended = true;
690-
stream.writable = false;
691690
}
692691

693692
function onCorkedFinish(corkReq, state, err) {
@@ -741,7 +740,7 @@ ObjectDefineProperties(Writable.prototype, {
741740
get() {
742741
const w = this._writableState;
743742
if (!w) return false;
744-
if (w.writable !== undefined) return w.writable;
743+
if (w.writable !== undefined) return w.writable && !w.ended;
745744
return Boolean(!w.destroyed && !w.errored && !w.ending);
746745
},
747746
set(val) {

test/parallel/test-stream-writable-ended-state.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,24 @@ const writable = new stream.Writable();
99

1010
writable._write = (chunk, encoding, cb) => {
1111
assert.strictEqual(writable._writableState.ended, false);
12+
assert.strictEqual(writable._writableState.writable, undefined);
1213
assert.strictEqual(writable.writableEnded, false);
1314
cb();
1415
};
1516

1617
assert.strictEqual(writable._writableState.ended, false);
18+
assert.strictEqual(writable._writableState.writable, undefined);
19+
assert.strictEqual(writable.writable, true);
1720
assert.strictEqual(writable.writableEnded, false);
1821

1922
writable.end('testing ended state', common.mustCall(() => {
2023
assert.strictEqual(writable._writableState.ended, true);
24+
assert.strictEqual(writable._writableState.writable, undefined);
25+
assert.strictEqual(writable.writable, false);
2126
assert.strictEqual(writable.writableEnded, true);
2227
}));
2328

2429
assert.strictEqual(writable._writableState.ended, true);
30+
assert.strictEqual(writable._writableState.writable, undefined);
31+
assert.strictEqual(writable.writable, false);
2532
assert.strictEqual(writable.writableEnded, true);

0 commit comments

Comments
 (0)