@@ -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 */
103103function 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) {
121121function parseLength ( parser ) {
122122 var string = parseSimpleNumbers ( parser )
123123 if ( string !== undefined ) {
124- return + string
124+ return string
125125 }
126126}
127127
0 commit comments