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');