From 4c67d746070ccd3bc39071cde4a8ceb6bdd0bd1d Mon Sep 17 00:00:00 2001 From: Trevor Norris Date: Thu, 21 Jan 2016 13:51:09 -0700 Subject: [PATCH] buffer: allow encoding param to collapse Currently the signature is indexOf(val[, byteOffset[, encoding]]) Instead allow indexOf(val[, byteOffset][, encoding]) so that byteOffset does not need to be passed. PR-URL: https://github.com/nodejs/node/pull/4803 Reviewed-By: James M Snell --- lib/buffer.js | 8 ++++++-- test/parallel/test-buffer-indexof.js | 5 +++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index 6b1621eae1..88e6dd2b3d 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -464,10 +464,14 @@ function slowIndexOf(buffer, val, byteOffset, encoding) { } Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { - if (byteOffset > 0x7fffffff) + if (typeof byteOffset === 'string') { + encoding = byteOffset; + byteOffset = 0; + } else if (byteOffset > 0x7fffffff) { byteOffset = 0x7fffffff; - else if (byteOffset < -0x80000000) + } else if (byteOffset < -0x80000000) { byteOffset = -0x80000000; + } byteOffset >>= 0; if (typeof val === 'string') { diff --git a/test/parallel/test-buffer-indexof.js b/test/parallel/test-buffer-indexof.js index 221176c40f..19f76fb0be 100644 --- a/test/parallel/test-buffer-indexof.js +++ b/test/parallel/test-buffer-indexof.js @@ -110,6 +110,11 @@ assert.equal( Buffer(b.toString('binary'), 'binary') .indexOf(Buffer('d', 'binary'), 0, 'binary'), 3); +// test optional offset with passed encoding +assert.equal(new Buffer('aaaa0').indexOf('30', 'hex'), 4); +assert.equal(new Buffer('aaaa00a').indexOf('3030', 'hex'), 4); + + { // test usc2 encoding const twoByteString = new Buffer('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2');