Skip to content

Commit

Permalink
Fix int parsing on 1 digit negative numbers. Add missing test case.
Browse files Browse the repository at this point in the history
  • Loading branch information
pityka committed Jun 2, 2023
1 parent 31c1e4e commit b1bd669
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object ScalarTagInt extends ScalarTag[Int] {
length -= 1
}

if (offset > from && length == 1) return Int.MinValue
if (length == 0) return Int.MinValue

var result = 0
if (length > 3) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ object ScalarTagLong extends ScalarTag[Long] {
length -= 1
}

if (offset > from && length == 1) return Long.MinValue
if (length == 0) return Long.MinValue

var result = 0L
if (length > 3) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,16 @@ class ScalarTagCheck extends Specification with ScalaCheck {

val m = Array.ofDim[Array[Char]](5000000)
val k = Array.ofDim[Int](5000000)
0 until 10000 foreach { i =>
val ar =
(i).toString.toCharArray
val ar2 =
(-i).toString.toCharArray
m(i) = ar
k(i) = (m(i).length)
m(i + 10000) = ar2
k(i + 10000) = (m(i + 10000).length)
}
0 until m.length foreach { i =>
val ar =
scala.util.Random
Expand All @@ -127,6 +137,8 @@ class ScalarTagCheck extends Specification with ScalaCheck {
k(1) = m(1).length
m(2) = 9.toString.toCharArray()
k(2) = 1
m(3) = (-9).toString.toCharArray()
k(3) = 2

var i = 0
val n = m.length
Expand All @@ -146,7 +158,17 @@ class ScalarTagCheck extends Specification with ScalaCheck {

val m = Array.ofDim[Array[Char]](5000000)
val k = Array.ofDim[Int](5000000)
0 until m.length foreach { i =>
0 until 10000 foreach { i =>
val ar =
(i).toString.toCharArray
val ar2 =
(-i).toString.toCharArray
m(i) = ar
k(i) = (m(i).length)
m(i + 10000) = ar2
k(i + 10000) = (m(i + 10000).length)
}
20000 until m.length foreach { i =>
val ar =
scala.util.Random
.nextLong()
Expand All @@ -159,6 +181,10 @@ class ScalarTagCheck extends Specification with ScalaCheck {
k(0) = m(0).length
m(1) = Long.MinValue.toString.toCharArray()
k(1) = m(1).length
m(2) = 9.toString.toCharArray()
k(2) = 1
m(3) = (-9).toString.toCharArray()
k(3) = 2

var i = 0
val n = m.length
Expand Down

0 comments on commit b1bd669

Please sign in to comment.