From 4ffad094ba25b27d42a01d28ca1a2737076b731d Mon Sep 17 00:00:00 2001 From: James M Snell Date: Wed, 15 Feb 2017 09:35:57 -0800 Subject: [PATCH] buffer: refactor slowToString MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since slowToString only has one callsite, refactor to eliminate the use of call. PR-URL: https://github.com/nodejs/node/pull/11358 Reviewed-By: Colin Ihrig Reviewed-By: Сковорода Никита Андреевич Reviewed-By: Luigi Pinca Reviewed-By: Joyee Cheung Reviewed-By: Anna Henningsen --- lib/buffer.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index 6ca079223723fc..21e24c2980f5e6 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -426,10 +426,10 @@ Object.defineProperty(Buffer.prototype, 'offset', { }); -function slowToString(encoding, start, end) { +function slowToString(buf, encoding, start, end) { var loweredCase = false; - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // No need to verify that "buf.length <= MAX_UINT32" since it's a read-only // property of a typed array. // This behaves neither like String nor Uint8Array in that we set start/end @@ -438,13 +438,13 @@ function slowToString(encoding, start, end) { // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. if (start === undefined || start < 0) start = 0; - // Return early if start > this.length. Done here to prevent potential uint32 + // Return early if start > buf.length. Done here to prevent potential uint32 // coercion fail below. - if (start > this.length) + if (start > buf.length) return ''; - if (end === undefined || end > this.length) - end = this.length; + if (end === undefined || end > buf.length) + end = buf.length; if (end <= 0) return ''; @@ -461,27 +461,27 @@ function slowToString(encoding, start, end) { while (true) { switch (encoding) { case 'hex': - return this.hexSlice(start, end); + return buf.hexSlice(start, end); case 'utf8': case 'utf-8': - return this.utf8Slice(start, end); + return buf.utf8Slice(start, end); case 'ascii': - return this.asciiSlice(start, end); + return buf.asciiSlice(start, end); case 'latin1': case 'binary': - return this.latin1Slice(start, end); + return buf.latin1Slice(start, end); case 'base64': - return this.base64Slice(start, end); + return buf.base64Slice(start, end); case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': - return this.ucs2Slice(start, end); + return buf.ucs2Slice(start, end); default: if (loweredCase) @@ -498,7 +498,7 @@ Buffer.prototype.toString = function(encoding, start, end) { if (arguments.length === 0) { result = this.utf8Slice(0, this.length); } else { - result = slowToString.call(this, encoding, start, end); + result = slowToString(this, encoding, start, end); } if (result === undefined) throw new Error('"toString()" failed');