Skip to content

Commit 257a7a5

Browse files
benjamingrdanielleadams
authored andcommitted
fs: fix writev empty array error behavior
PR-URL: #41919 Fixes: #41910 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: Minwoo Jung <nodecorelab@gmail.com>
1 parent e21831b commit 257a7a5

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

lib/internal/fs/promises.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,10 @@ async function writev(handle, buffers, position) {
544544
if (typeof position !== 'number')
545545
position = null;
546546

547+
if (buffers.length === 0) {
548+
return { bytesWritten: 0, buffers };
549+
}
550+
547551
const bytesWritten = (await binding.writeBuffers(handle.fd, buffers, position,
548552
kUsePromises)) || 0;
549553
return { bytesWritten, buffers };

test/parallel/test-fs-writev-promises.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,13 @@ tmpdir.refresh();
4747
assert(Buffer.concat(bufferArr).equals(await fs.readFile(filename)));
4848
handle.close();
4949
}
50+
51+
{
52+
// Writev with empty array behavior
53+
const handle = await fs.open(getFileName(), 'w');
54+
const result = await handle.writev([]);
55+
assert.strictEqual(result.bytesWritten, 0);
56+
assert.strictEqual(result.buffers.length, 0);
57+
handle.close();
58+
}
5059
})().then(common.mustCall());

0 commit comments

Comments
 (0)