Skip to content

Commit 7bcb45c

Browse files
committed
fs: fix callback with error if SyncWriteStream writeSync failed
Catch SyncWriteStream write file error. Fixes: #47948
1 parent 226573b commit 7bcb45c

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 true;
31+
}
2732
cb();
2833
return true;
2934
};

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

+12
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,15 @@ const filename = path.join(tmpdir.path, 'sync-write-stream.txt');
7474
assert.strictEqual(stream.fd, null);
7575
}));
7676
}
77+
78+
// Verify write file failed trigger error event
79+
{
80+
const fd = fs.openSync(filename, 'w');
81+
const stream = new SyncWriteStream(fd);
82+
83+
assert.strictEqual(stream.fd, fd);
84+
stream._write({}, null, common.mustCall((err) => {
85+
assert(err);
86+
fs.closeSync(fd);
87+
}));
88+
}

0 commit comments

Comments
 (0)