buffer: refactor checks for SlowBuffer creation
PR-URL: https://github.com/nodejs/node/pull/25266 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
0a549aaeac
commit
728505acd5
@ -102,7 +102,7 @@ const constants = Object.defineProperties({}, {
|
||||
});
|
||||
|
||||
Buffer.poolSize = 8 * 1024;
|
||||
var poolSize, poolOffset, allocPool;
|
||||
let poolSize, poolOffset, allocPool;
|
||||
|
||||
setupBufferJS(Buffer.prototype, bindingObj);
|
||||
|
||||
@ -221,7 +221,7 @@ Buffer.from = function from(value, encodingOrOffset, length) {
|
||||
if (valueOf !== null && valueOf !== undefined && valueOf !== value)
|
||||
return Buffer.from(valueOf, encodingOrOffset, length);
|
||||
|
||||
var b = fromObject(value);
|
||||
const b = fromObject(value);
|
||||
if (b)
|
||||
return b;
|
||||
|
||||
@ -307,13 +307,10 @@ Buffer.allocUnsafeSlow = function allocUnsafeSlow(size) {
|
||||
// If --zero-fill-buffers command line argument is set, a zero-filled
|
||||
// buffer is returned.
|
||||
function SlowBuffer(length) {
|
||||
const len = +length;
|
||||
// eslint-disable-next-line eqeqeq
|
||||
if (len != length)
|
||||
length = 0;
|
||||
else
|
||||
assertSize(len);
|
||||
return createUnsafeBuffer(len);
|
||||
if (typeof length !== 'number')
|
||||
length = +length;
|
||||
assertSize(length);
|
||||
return createUnsafeBuffer(length);
|
||||
}
|
||||
|
||||
Object.setPrototypeOf(SlowBuffer.prototype, Uint8Array.prototype);
|
||||
@ -326,7 +323,7 @@ function allocate(size) {
|
||||
if (size < (Buffer.poolSize >>> 1)) {
|
||||
if (size > (poolSize - poolOffset))
|
||||
createPool();
|
||||
var b = new FastBuffer(allocPool, poolOffset, size);
|
||||
const b = new FastBuffer(allocPool, poolOffset, size);
|
||||
poolOffset += size;
|
||||
alignPool();
|
||||
return b;
|
||||
@ -335,7 +332,7 @@ function allocate(size) {
|
||||
}
|
||||
|
||||
function fromString(string, encoding) {
|
||||
var length;
|
||||
let length;
|
||||
if (typeof encoding !== 'string' || encoding.length === 0) {
|
||||
if (string.length === 0)
|
||||
return new FastBuffer();
|
||||
@ -354,7 +351,7 @@ function fromString(string, encoding) {
|
||||
|
||||
if (length > (poolSize - poolOffset))
|
||||
createPool();
|
||||
var b = new FastBuffer(allocPool, poolOffset, length);
|
||||
let b = new FastBuffer(allocPool, poolOffset, length);
|
||||
const actual = b.write(string, encoding);
|
||||
if (actual !== length) {
|
||||
// byteLength() may overestimate. That's a rare case, though.
|
||||
@ -456,7 +453,7 @@ Buffer.isEncoding = function isEncoding(encoding) {
|
||||
Buffer[kIsEncodingSymbol] = Buffer.isEncoding;
|
||||
|
||||
Buffer.concat = function concat(list, length) {
|
||||
var i;
|
||||
let i;
|
||||
if (!Array.isArray(list)) {
|
||||
throw new ERR_INVALID_ARG_TYPE(
|
||||
'list', ['Array', 'Buffer', 'Uint8Array'], list);
|
||||
@ -473,10 +470,10 @@ Buffer.concat = function concat(list, length) {
|
||||
length = length >>> 0;
|
||||
}
|
||||
|
||||
var buffer = Buffer.allocUnsafe(length);
|
||||
var pos = 0;
|
||||
const buffer = Buffer.allocUnsafe(length);
|
||||
let pos = 0;
|
||||
for (i = 0; i < list.length; i++) {
|
||||
var buf = list[i];
|
||||
const buf = list[i];
|
||||
if (!isUint8Array(buf)) {
|
||||
// TODO(BridgeAR): This should not be of type ERR_INVALID_ARG_TYPE.
|
||||
// Instead, find the proper error code for this.
|
||||
@ -791,7 +788,7 @@ function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
|
||||
}
|
||||
|
||||
function slowIndexOf(buffer, val, byteOffset, encoding, dir) {
|
||||
var loweredCase = false;
|
||||
let loweredCase = false;
|
||||
for (;;) {
|
||||
switch (encoding) {
|
||||
case 'utf8':
|
||||
@ -926,7 +923,7 @@ Buffer.prototype.write = function write(string, offset, length, encoding) {
|
||||
length = undefined;
|
||||
}
|
||||
|
||||
var remaining = this.length - offset;
|
||||
const remaining = this.length - offset;
|
||||
if (length === undefined || length > remaining)
|
||||
length = remaining;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user