buffer: allow .write() offset to be at buffer end

Do not throw if the offset passed to `buf.write()` points
to the end of the buffer.

Fixes: https://github.com/nodejs/node/issues/8127
PR-URL: https://github.com/nodejs/node/pull/8154
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michaël Zasso <mic.besace@gmail.com>
This commit is contained in:
Anna Henningsen 2016-08-18 03:58:38 +02:00 committed by James M Snell
parent d6d3229603
commit 3242b27b54
2 changed files with 7 additions and 1 deletions

View File

@ -714,7 +714,7 @@ void StringWrite(const FunctionCallbackInfo<Value>& args) {
size_t max_length;
CHECK_NOT_OOB(ParseArrayIndex(args[1], 0, &offset));
if (offset >= ts_obj_length)
if (offset > ts_obj_length)
return env->ThrowRangeError("Offset is out of bounds");
CHECK_NOT_OOB(ParseArrayIndex(args[2], ts_obj_length - offset, &max_length));

View File

@ -358,6 +358,12 @@ writeTest.write('e', 3, 'ascii');
writeTest.write('j', 4, 'ascii');
assert.equal(writeTest.toString(), 'nodejs');
// Offset points to the end of the buffer
// (see https://github.com/nodejs/node/issues/8127).
assert.doesNotThrow(() => {
Buffer.alloc(1).write('', 1, 0);
});
// ASCII slice test
{
const asciiString = 'hello world';