| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const fs = require('fs'); |
| |
| const tmpdir = require('../common/tmpdir'); |
| tmpdir.refresh(); |
| |
| // fs.write with length > INT32_MAX |
| |
| common.skipIf32Bits(); |
| |
| let buf; |
| try { |
| buf = Buffer.allocUnsafe(0x7FFFFFFF + 1); |
| } catch (e) { |
| // If the exception is not due to memory confinement then rethrow it. |
| if (e.message !== 'Array buffer allocation failed') throw (e); |
| common.skip('skipped due to memory requirements'); |
| } |
| |
| const filename = tmpdir.resolve('write9.txt'); |
| fs.open(filename, 'w', 0o644, common.mustSucceed((fd) => { |
| assert.throws(() => { |
| fs.write(fd, |
| buf, |
| 0, |
| 0x7FFFFFFF + 1, |
| 0, |
| common.mustNotCall()); |
| }, { |
| code: 'ERR_OUT_OF_RANGE', |
| name: 'RangeError', |
| message: 'The value of "length" is out of range. ' + |
| 'It must be >= 0 && <= 2147483647. Received 2147483648' |
| }); |
| |
| fs.closeSync(fd); |
| })); |