Skip to content

Commit 583046b

Browse files
author
Ruben Bridgewater
committed
Minimal improvement
1 parent c9a55be commit 583046b

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

lib/parser.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ function parseSimpleNumbers (parser) {
3838
/**
3939
* Used for integer numbers in case of the returnNumbers option
4040
*
41-
* The maximimum possible integer to use is: Math.floor(Number.MAX_SAFE_INTEGER / 10) - 9
41+
* The maximimum possible integer to use is: Math.floor(Number.MAX_SAFE_INTEGER / 10)
42+
* Staying in a SMI Math.floor((Math.pow(2, 32) / 10) - 1) is even more efficient though
4243
*
4344
* @param parser
4445
* @returns {*}
@@ -62,9 +63,8 @@ function parseStringNumbers (parser) {
6263
res += number
6364
}
6465
return res
65-
} else if (number > 900719925474090) {
66-
res += number
67-
res += c1 - 48
66+
} else if (number > 429496728) {
67+
res += (number * 10) + (c1 - 48)
6868
number = 0
6969
} else if (c1 === 48 && number === 0) {
7070
res += 0
@@ -102,9 +102,9 @@ function convertBufferRange (parser, start, end) {
102102
*/
103103
function parseSimpleStringViaOffset (parser) {
104104
var start = parser.offset
105-
var offset = parser.offset
106-
var length = parser.buffer.length - 1
105+
var offset = start
107106
var buffer = parser.buffer
107+
var length = buffer.length - 1
108108

109109
while (offset < length) {
110110
if (buffer[offset++] === 13) { // \r\n
@@ -121,7 +121,7 @@ function parseSimpleStringViaOffset (parser) {
121121
function parseLength (parser) {
122122
var string = parseSimpleNumbers(parser)
123123
if (string !== undefined) {
124-
return +string
124+
return string
125125
}
126126
}
127127

test/parsers.spec.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ describe('parsers', function () {
541541
return this.skip()
542542
}
543543
var replyCount = 0
544-
var entries = ['123', '590295810358705700002', '-99999999999999999', '9007199254740992', '90071992547409920', '10000040000000000000000000000000000000020']
544+
var entries = ['123', '590295810358705700002', '-99999999999999999', '4294967290', '90071992547409920', '10000040000000000000000000000000000000020']
545545
function checkReply (reply) {
546546
assert.strictEqual(typeof reply, 'string')
547547
assert.strictEqual(reply, entries[replyCount])
@@ -551,7 +551,7 @@ describe('parsers', function () {
551551
returnReply: checkReply,
552552
stringNumbers: true
553553
})
554-
parser.execute(new Buffer(':123\r\n:590295810358705700002\r\n:-99999999999999999\r\n:9007199254740992\r\n:90071992547409920\r\n:10000040000000000000000000000000000000020\r\n'))
554+
parser.execute(new Buffer(':123\r\n:590295810358705700002\r\n:-99999999999999999\r\n:4294967290\r\n:90071992547409920\r\n:10000040000000000000000000000000000000020\r\n'))
555555
assert.strictEqual(replyCount, 6)
556556
})
557557

0 commit comments

Comments
 (0)