Skip to content

Commit 4c67d74

Browse files
trevnorrisrvagg
authored andcommitted
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: #4803 Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 18d24e6 commit 4c67d74

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

lib/buffer.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -464,10 +464,14 @@ function slowIndexOf(buffer, val, byteOffset, encoding) {
464464
}
465465

466466
Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
467-
if (byteOffset > 0x7fffffff)
467+
if (typeof byteOffset === 'string') {
468+
encoding = byteOffset;
469+
byteOffset = 0;
470+
} else if (byteOffset > 0x7fffffff) {
468471
byteOffset = 0x7fffffff;
469-
else if (byteOffset < -0x80000000)
472+
} else if (byteOffset < -0x80000000) {
470473
byteOffset = -0x80000000;
474+
}
471475
byteOffset >>= 0;
472476

473477
if (typeof val === 'string') {

test/parallel/test-buffer-indexof.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,11 @@ assert.equal(
110110
Buffer(b.toString('binary'), 'binary')
111111
.indexOf(Buffer('d', 'binary'), 0, 'binary'), 3);
112112

113+
// test optional offset with passed encoding
114+
assert.equal(new Buffer('aaaa0').indexOf('30', 'hex'), 4);
115+
assert.equal(new Buffer('aaaa00a').indexOf('3030', 'hex'), 4);
116+
117+
113118
{
114119
// test usc2 encoding
115120
const twoByteString = new Buffer('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2');

0 commit comments

Comments
 (0)