-
Notifications
You must be signed in to change notification settings - Fork 29.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
errors, buffer: Migrate buffer errors to use internal/errors #13976
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -67,9 +67,6 @@ Object.defineProperty(exports, 'constants', { | |
|
||
exports.kStringMaxLength = binding.kStringMaxLength; | ||
|
||
const kFromErrorMsg = 'First argument must be a string, Buffer, ' + | ||
'ArrayBuffer, Array, or array-like object.'; | ||
|
||
Buffer.poolSize = 8 * 1024; | ||
var poolSize, poolOffset, allocPool; | ||
|
||
|
@@ -146,9 +143,8 @@ function Buffer(arg, encodingOrOffset, length) { | |
// Common case. | ||
if (typeof arg === 'number') { | ||
if (typeof encodingOrOffset === 'string') { | ||
throw new Error( | ||
'If encoding is specified then the first argument must be a string' | ||
); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'string', | ||
'string', arg); | ||
} | ||
return Buffer.alloc(arg); | ||
} | ||
|
@@ -177,10 +173,12 @@ Buffer.from = function(value, encodingOrOffset, length) { | |
return fromArrayBuffer(value, encodingOrOffset, length); | ||
|
||
if (value == null) | ||
throw new TypeError(kFromErrorMsg); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'first argument', | ||
['string', 'buffer', 'arrayBuffer', 'array', 'array-like object'], value); | ||
|
||
if (typeof value === 'number') | ||
throw new TypeError('"value" argument must not be a number'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'value', 'not number', | ||
value); | ||
|
||
const valueOf = value.valueOf && value.valueOf(); | ||
if (valueOf != null && valueOf !== value) | ||
|
@@ -196,7 +194,8 @@ Buffer.from = function(value, encodingOrOffset, length) { | |
length); | ||
} | ||
|
||
throw new TypeError(kFromErrorMsg); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'first argument', | ||
['string', 'buffer', 'arrayBuffer', 'array', 'array-like object']); | ||
}; | ||
|
||
Object.setPrototypeOf(Buffer, Uint8Array); | ||
|
@@ -208,12 +207,11 @@ function assertSize(size) { | |
let err = null; | ||
|
||
if (typeof size !== 'number') { | ||
err = new TypeError('"size" argument must be a number'); | ||
err = new errors.TypeError('ERR_INVALID_ARG_TYPE', 'size', 'number', size); | ||
} else if (size < 0) { | ||
err = new RangeError('"size" argument must not be negative'); | ||
err = new errors.RangeError('ERR_INVALID_OPT_VALUE', 'size', size); | ||
} else if (size > binding.kMaxLength) { | ||
err = new RangeError('"size" argument must not be larger ' + | ||
'than ' + binding.kMaxLength); | ||
err = new errors.RangeError('ERR_INVALID_OPT_VALUE', 'size', size); | ||
} | ||
|
||
if (err) { | ||
|
@@ -300,7 +298,7 @@ function fromString(string, encoding) { | |
} else { | ||
length = byteLength(string, encoding, true); | ||
if (length === -1) | ||
throw new TypeError('"encoding" must be a valid string encoding'); | ||
throw new errors.TypeError('ERR_UNKNOWN_ENCODING', encoding); | ||
if (string.length === 0) | ||
return new FastBuffer(); | ||
} | ||
|
@@ -343,7 +341,7 @@ function fromArrayBuffer(obj, byteOffset, length) { | |
const maxLength = obj.byteLength - byteOffset; | ||
|
||
if (maxLength < 0) | ||
throw new RangeError("'offset' is out of bounds"); | ||
throw new errors.RangeError('ERR_BUFFER_OUT_OF_BOUNDS', 'offset'); | ||
|
||
if (length === undefined) { | ||
length = maxLength; | ||
|
@@ -355,7 +353,7 @@ function fromArrayBuffer(obj, byteOffset, length) { | |
length = 0; | ||
} else if (length > 0) { | ||
if (length > maxLength) | ||
throw new RangeError("'length' is out of bounds"); | ||
throw new errors.RangeError('ERR_BUFFER_OUT_OF_BOUNDS', 'length'); | ||
} else { | ||
length = 0; | ||
} | ||
|
@@ -399,7 +397,8 @@ Buffer.isBuffer = function isBuffer(b) { | |
|
||
Buffer.compare = function compare(a, b) { | ||
if (!isUint8Array(a) || !isUint8Array(b)) { | ||
throw new TypeError('Arguments must be Buffers or Uint8Arrays'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', ['buf1', 'buf2'], | ||
['buffer', 'uint8Array']); | ||
} | ||
|
||
if (a === b) { | ||
|
@@ -416,13 +415,13 @@ Buffer.isEncoding = function(encoding) { | |
}; | ||
Buffer[internalUtil.kIsEncodingSymbol] = Buffer.isEncoding; | ||
|
||
const kConcatErrMsg = '"list" argument must be an Array ' + | ||
'of Buffer or Uint8Array instances'; | ||
const kConcatErr = new errors.TypeError('ERR_INVALID_ARG_TYPE', 'list', | ||
['array', 'buffer', 'uint8Array']); | ||
|
||
Buffer.concat = function(list, length) { | ||
var i; | ||
if (!Array.isArray(list)) | ||
throw new TypeError(kConcatErrMsg); | ||
throw kConcatErr; | ||
|
||
if (list.length === 0) | ||
return new FastBuffer(); | ||
|
@@ -440,7 +439,7 @@ Buffer.concat = function(list, length) { | |
for (i = 0; i < list.length; i++) { | ||
var buf = list[i]; | ||
if (!isUint8Array(buf)) | ||
throw new TypeError(kConcatErrMsg); | ||
throw kConcatErr; | ||
binding.copy(buf, buffer, pos); | ||
pos += buf.length; | ||
} | ||
|
@@ -475,7 +474,8 @@ function byteLength(string, encoding) { | |
return string.byteLength; | ||
} | ||
|
||
throw new TypeError('"string" must be a string, Buffer, or ArrayBuffer'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'string', | ||
['string', 'buffer', 'arrayBuffer']); | ||
} | ||
|
||
const len = string.length; | ||
|
@@ -591,7 +591,7 @@ function stringSlice(buf, encoding, start, end) { | |
return buf.ucs2Slice(start, end); | ||
break; | ||
} | ||
throw new TypeError('Unknown encoding: ' + encoding); | ||
throw new errors.TypeError('ERR_UNKNOWN_ENCODING', encoding); | ||
} | ||
|
||
|
||
|
@@ -633,8 +633,8 @@ Buffer.prototype.toString = function(encoding, start, end) { | |
|
||
Buffer.prototype.equals = function equals(b) { | ||
if (!isUint8Array(b)) | ||
throw new TypeError('Argument must be a Buffer or Uint8Array'); | ||
|
||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'otherBuffer', | ||
['buffer', 'uint8Array']); | ||
if (this === b) | ||
return true; | ||
|
||
|
@@ -659,7 +659,8 @@ Buffer.prototype.compare = function compare(target, | |
thisStart, | ||
thisEnd) { | ||
if (!isUint8Array(target)) | ||
throw new TypeError('Argument must be a Buffer or Uint8Array'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'target', | ||
['buffer', 'uint8Array']); | ||
if (arguments.length === 1) | ||
return compare_(this, target); | ||
|
||
|
@@ -738,8 +739,8 @@ function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { | |
return binding.indexOfNumber(buffer, val, byteOffset, dir); | ||
} | ||
|
||
throw new TypeError('"val" argument must be string, number, Buffer ' + | ||
'or Uint8Array'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'val', | ||
['string', 'buffer', 'uint8Array']); | ||
} | ||
|
||
|
||
|
@@ -765,7 +766,7 @@ function slowIndexOf(buffer, val, byteOffset, encoding, dir) { | |
|
||
default: | ||
if (loweredCase) { | ||
throw new TypeError('Unknown encoding: ' + encoding); | ||
throw new errors.TypeError('ERR_UNKNOWN_ENCODING', encoding); | ||
} | ||
|
||
encoding = ('' + encoding).toLowerCase(); | ||
|
@@ -807,11 +808,11 @@ Buffer.prototype.fill = function fill(val, start, end, encoding) { | |
} | ||
|
||
if (encoding !== undefined && typeof encoding !== 'string') { | ||
throw new TypeError('encoding must be a string'); | ||
throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'encoding', 'string'); | ||
} | ||
var normalizedEncoding = internalUtil.normalizeEncoding(encoding); | ||
if (normalizedEncoding === undefined) { | ||
throw new TypeError('Unknown encoding: ' + encoding); | ||
throw new errors.TypeError('ERR_UNKNOWN_ENCODING', encoding); | ||
} | ||
|
||
if (val.length === 0) { | ||
|
@@ -872,13 +873,13 @@ Buffer.prototype.write = function(string, offset, length, encoding) { | |
length = remaining; | ||
|
||
if (string.length > 0 && (length < 0 || offset < 0)) | ||
throw new RangeError('Attempt to write outside buffer bounds'); | ||
throw new errors.RangeError('ERR_BUFFER_OUT_OF_BOUNDS', 'length', true); | ||
} else { | ||
// if someone is still calling the obsolete form of write(), tell them. | ||
// we don't want eg buf.write("foo", "utf8", 10) to silently turn into | ||
// buf.write("foo", "utf8"), so we can't ignore extra args | ||
throw new Error('Buffer.write(string, encoding, offset[, length]) ' + | ||
'is no longer supported'); | ||
throw new errors.Error('ERR_NO_LONGER_SUPPORTED', | ||
'Buffer.write(string, encoding, offset[, length])'); | ||
} | ||
|
||
if (!encoding) return this.utf8Write(string, offset, length); | ||
|
@@ -925,7 +926,7 @@ Buffer.prototype.write = function(string, offset, length, encoding) { | |
return this.hexWrite(string, offset, length); | ||
break; | ||
} | ||
throw new TypeError('Unknown encoding: ' + encoding); | ||
throw new errors.TypeError('ERR_UNKNOWN_ENCODING', encoding); | ||
}; | ||
|
||
|
||
|
@@ -1176,7 +1177,7 @@ Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { | |
|
||
function checkInt(buffer, value, offset, ext, max, min) { | ||
if (value > max || value < min) | ||
throw new TypeError('"value" argument is out of bounds'); | ||
throw new errors.RangeError('ERR_INVALID_OPT_VALUE', 'value', value); | ||
if (offset + ext > buffer.length) | ||
throw new errors.RangeError('ERR_INDEX_OUT_OF_RANGE'); | ||
} | ||
|
@@ -1448,7 +1449,7 @@ Buffer.prototype.swap16 = function swap16() { | |
// dropping down to the native code is faster. | ||
const len = this.length; | ||
if (len % 2 !== 0) | ||
throw new RangeError('Buffer size must be a multiple of 16-bits'); | ||
throw new errors.RangeError('ERR_INVALID_BUFFER_SIZE', '16-bits'); | ||
if (len < 128) { | ||
for (var i = 0; i < len; i += 2) | ||
swap(this, i, i + 1); | ||
|
@@ -1464,7 +1465,7 @@ Buffer.prototype.swap32 = function swap32() { | |
// dropping down to the native code is faster. | ||
const len = this.length; | ||
if (len % 4 !== 0) | ||
throw new RangeError('Buffer size must be a multiple of 32-bits'); | ||
throw new errors.RangeError('ERR_INVALID_BUFFER_SIZE', '32-bits'); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Since this code is for a little bit more specific condition, think about |
||
if (len < 192) { | ||
for (var i = 0; i < len; i += 4) { | ||
swap(this, i, i + 3); | ||
|
@@ -1482,7 +1483,7 @@ Buffer.prototype.swap64 = function swap64() { | |
// dropping down to the native code is faster. | ||
const len = this.length; | ||
if (len % 8 !== 0) | ||
throw new RangeError('Buffer size must be a multiple of 64-bits'); | ||
throw new errors.RangeError('ERR_INVALID_BUFFER_SIZE', '64-bits'); | ||
if (len < 192) { | ||
for (var i = 0; i < len; i += 8) { | ||
swap(this, i, i + 7); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does the string end up being here ? I think this may be the first case were we have the 'not' cases versus listing out what it should be.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I extended the
invalidArgType(name, expected, actual)
in internal/errors.js to make it adapt to the 'not' cases. See here.The case here will end up being:
The tests for it is also changed.