diff --git a/deps/streamsearch/sbmh.js b/deps/streamsearch/sbmh.js index c1bd5b6..79d3150 100644 --- a/deps/streamsearch/sbmh.js +++ b/deps/streamsearch/sbmh.js @@ -40,6 +40,7 @@ function SBMH (needle) { } const needleLength = needle.length + const needleLastCharIndex = needleLength - 1 if (needleLength === 0) { throw new Error('The needle cannot be an empty String/Buffer.') @@ -58,12 +59,12 @@ function SBMH (needle) { this._needle = needle this._bufpos = 0 - this._lookbehind = Buffer.alloc(needleLength) + this._lookbehind = Buffer.alloc(needleLastCharIndex) // Populate occurrence table with analysis of the needle, // ignoring last letter. - for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var - this._occ[needle[i]] = needleLength - 1 - i + for (var i = 0; i < needleLastCharIndex; ++i) { // eslint-disable-line no-var + this._occ[needle[i]] = needleLastCharIndex - i } } inherits(SBMH, EventEmitter) diff --git a/test/streamsearch.test.js b/test/streamsearch.test.js index 7327fa9..f565496 100644 --- a/test/streamsearch.test.js +++ b/test/streamsearch.test.js @@ -244,7 +244,7 @@ test('streamsearch', async t => { const expected = [ [false, Buffer.from('bar\r'), 0, 3], - [false, Buffer.from('\r\0\0'), 0, 1], + [false, Buffer.from('\r\0'), 0, 1], [false, Buffer.from('\n\r\nhello'), 0, 8] ] const needle = '\r\n\n' @@ -339,7 +339,7 @@ test('streamsearch', async t => { t.plan(13) const expected = [ - [false, Buffer.from('\n\n\0'), 0, 1], + [false, Buffer.from('\n\n'), 0, 1], [true, undefined, undefined, undefined], [false, Buffer.from('\r\nhello'), 1, 7] ] @@ -374,8 +374,8 @@ test('streamsearch', async t => { const expected = [ [false, Buffer.from('bar\r'), 0, 3], - [false, Buffer.from('\r\n\0'), 0, 2], - [false, Buffer.from('\r\n\0'), 0, 1], + [false, Buffer.from('\r\n'), 0, 2], + [false, Buffer.from('\r\n'), 0, 1], [false, Buffer.from('hello'), 0, 5] ] const needle = '\r\n\n'