Skip to content

Commit 5354af3

Browse files
killaguruyadorno
authored andcommittedSep 12, 2023
fs: call the callback with an error if writeSync fails
Catch SyncWriteStream write file error. Fixes: #47948 Signed-off-by: killagu <killa123@126.com> PR-URL: #47949 Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent c3a27d1 commit 5354af3

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed
 

‎lib/internal/fs/sync_write_stream.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ ObjectSetPrototypeOf(SyncWriteStream.prototype, Writable.prototype);
2323
ObjectSetPrototypeOf(SyncWriteStream, Writable);
2424

2525
SyncWriteStream.prototype._write = function(chunk, encoding, cb) {
26-
writeSync(this.fd, chunk, 0, chunk.length);
26+
try {
27+
writeSync(this.fd, chunk, 0, chunk.length);
28+
} catch (e) {
29+
cb(e);
30+
return;
31+
}
2732
cb();
2833
};
2934

‎test/parallel/test-internal-fs-syncwritestream.js

+12
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,15 @@ const filename = path.join(tmpdir.path, 'sync-write-stream.txt');
7979
assert.strictEqual(stream.fd, null);
8080
}));
8181
}
82+
83+
// Verify that an error on _write() triggers an 'error' event.
84+
{
85+
const fd = fs.openSync(filename, 'w');
86+
const stream = new SyncWriteStream(fd);
87+
88+
assert.strictEqual(stream.fd, fd);
89+
stream._write({}, null, common.mustCall((err) => {
90+
assert(err);
91+
fs.closeSync(fd);
92+
}));
93+
}

0 commit comments

Comments
 (0)
Please sign in to comment.