diff options
author | Zach Bjornson <zbbjornson@gmail.com> | 2019-03-18 11:27:13 -0700 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2019-08-16 22:09:27 -0700 |
commit | 0bbda5e5aede9b264a3c6188529c9dbed1ec9719 (patch) | |
tree | d5b87a4fe8a7e9e12f91fc71f983c5d0a661c33d /test | |
parent | 91a4cb71753b7c7012022e3e67c7a1f16f3b5e80 (diff) | |
download | android-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.tar.gz android-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.tar.bz2 android-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.zip |
fs: allow int64 offset in fs.read/readSync/fd.read
Since v10.10.0, 'buf' can be any DataView, meaning the largest
byteLength can be Float64Array.BYTES_PER_ELEMENT * kMaxLength =
17,179,869,176.
'offset' can now be up to 2**53 - 1. This makes it possible to tile
reads into a large buffer.
Breaking: now throws if read offset is not a safe int, is null or
is undefined.
Fixes https://github.com/nodejs/node/issues/26563
PR-URL: https://github.com/nodejs/node/pull/26572
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-fs-read-type.js | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/parallel/test-fs-read-type.js b/test/parallel/test-fs-read-type.js index b51df51589..f5ac78a230 100644 --- a/test/parallel/test-fs-read-type.js +++ b/test/parallel/test-fs-read-type.js @@ -53,6 +53,20 @@ assert.throws(() => { assert.throws(() => { fs.read(fd, Buffer.allocUnsafe(expected.length), + NaN, + expected.length, + 0, + common.mustNotCall()); +}, { + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "offset" is out of range. It must be an integer. ' + + 'Received NaN' +}); + +assert.throws(() => { + fs.read(fd, + Buffer.allocUnsafe(expected.length), 0, -1, 0, @@ -106,6 +120,19 @@ assert.throws(() => { assert.throws(() => { fs.readSync(fd, Buffer.allocUnsafe(expected.length), + NaN, + expected.length, + 0); +}, { + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "offset" is out of range. It must be an integer. ' + + 'Received NaN' +}); + +assert.throws(() => { + fs.readSync(fd, + Buffer.allocUnsafe(expected.length), 0, -1, 0); |