summaryrefslogtreecommitdiff
path: root/lib/buffer.js
diff options
context:
space:
mode:
authorJoyee Cheung <joyeec9h3@gmail.com>2016-12-13 12:51:01 +0800
committerAnna Henningsen <anna@addaleax.net>2016-12-13 19:25:13 +0100
commit3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8 (patch)
tree1e98fa2e1b0522361d26800da2d3757f058a7124 /lib/buffer.js
parent832960592faaf290903adcc768778ef4bdc6e9fc (diff)
downloadandroid-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.tar.gz
android-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.tar.bz2
android-node-v8-3d353c749cdb64b2d018766d05ba0e9b9b0f7ec8.zip
buffer: consistent error for length > kMaxLength
- Always return the same error message(hopefully more informative) for buffer length > kMaxLength and avoid getting into V8 C++ land for unnecessary checks. - Use accurate RegExp(reusable as `common.bufferMaxSizeMsg`) in tests for this error. - Separate related tests from test-buffer-alloc. PR-URL: https://github.com/nodejs/node/pull/10152 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'lib/buffer.js')
-rw-r--r--lib/buffer.js4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/buffer.js b/lib/buffer.js
index 557ac867e2..9a515e3381 100644
--- a/lib/buffer.js
+++ b/lib/buffer.js
@@ -115,6 +115,9 @@ function assertSize(size) {
err = new TypeError('"size" argument must be a number');
else if (size < 0)
err = new RangeError('"size" argument must not be negative');
+ else if (size > binding.kMaxLength)
+ err = new RangeError('"size" argument must not be larger ' +
+ 'than ' + binding.kMaxLength);
if (err) {
// The following hides the 'assertSize' method from the
@@ -167,6 +170,7 @@ Buffer.allocUnsafeSlow = function(size) {
function SlowBuffer(length) {
if (+length != length)
length = 0;
+ assertSize(+length);
return createUnsafeBuffer(+length);
}