diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 388ee6b5692a93..ad06dd0233dc1c 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -714,7 +714,7 @@ void StringWrite(const FunctionCallbackInfo& 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)); diff --git a/test/parallel/test-buffer-alloc.js b/test/parallel/test-buffer-alloc.js index df83fa83010832..47c65d0bca108a 100644 --- a/test/parallel/test-buffer-alloc.js +++ b/test/parallel/test-buffer-alloc.js @@ -358,6 +358,9 @@ writeTest.write('e', 3, 'ascii'); writeTest.write('j', 4, 'ascii'); assert.equal(writeTest.toString(), 'nodejs'); +// Does not throw (see https://github.com/nodejs/node/issues/8127). +Buffer.alloc(1).write('', 1, 0); + // ASCII slice test { const asciiString = 'hello world';