Browse Source

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 <jasnell@gmail.com>
v5.x
Trevor Norris 9 years ago
committed by Rod Vagg
parent
commit
4c67d74607
  1. 8
      lib/buffer.js
  2. 5
      test/parallel/test-buffer-indexof.js

8
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') {

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

Loading…
Cancel
Save