mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
buffer: improve .from() error details
This makes sure the original input is passed to the error in case no matching inputs are found. Instead of passing along all values, only valid or possibliy valid values are passed through. That way invalid values end up in the error case with the original input. PR-URL: https://github.com/nodejs/node/pull/29675 Reviewed-By: Rich Trott <rtrott@gmail.com>
This commit is contained in:
@@ -291,17 +291,21 @@ Buffer.from = function from(value, encodingOrOffset, length) {
|
||||
return fromArrayBuffer(value, encodingOrOffset, length);
|
||||
|
||||
const valueOf = value.valueOf && value.valueOf();
|
||||
if (valueOf !== null && valueOf !== undefined && valueOf !== value)
|
||||
return Buffer.from(valueOf, encodingOrOffset, length);
|
||||
if (valueOf != null &&
|
||||
valueOf !== value &&
|
||||
(typeof valueOf === 'string' || typeof valueOf === 'object')) {
|
||||
return from(valueOf, encodingOrOffset, length);
|
||||
}
|
||||
|
||||
const b = fromObject(value);
|
||||
if (b)
|
||||
return b;
|
||||
|
||||
if (typeof value[SymbolToPrimitive] === 'function') {
|
||||
return Buffer.from(value[SymbolToPrimitive]('string'),
|
||||
encodingOrOffset,
|
||||
length);
|
||||
const primitive = value[SymbolToPrimitive]('string');
|
||||
if (typeof primitive === 'string') {
|
||||
return fromString(primitive, encodingOrOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user