From 9d1a8f84f2b14221c52115d43a057c6927a343db Mon Sep 17 00:00:00 2001 From: AllenX2018 Date: Tue, 17 Nov 2020 17:37:55 +0800 Subject: [PATCH] fix issue 510 --- iter_float.go | 3 +++ iter_int.go | 1 + 2 files changed, 4 insertions(+) diff --git a/iter_float.go b/iter_float.go index b9754638..8a3d8b6f 100644 --- a/iter_float.go +++ b/iter_float.go @@ -288,6 +288,9 @@ non_decimal_loop: return iter.readFloat64SlowPath() } value = (value << 3) + (value << 1) + uint64(ind) + if value > maxFloat64 { + return iter.readFloat64SlowPath() + } } } return iter.readFloat64SlowPath() diff --git a/iter_int.go b/iter_int.go index cb8d1e54..d786a89f 100644 --- a/iter_int.go +++ b/iter_int.go @@ -9,6 +9,7 @@ var intDigits []int8 const uint32SafeToMultiply10 = uint32(0xffffffff)/10 - 1 const uint64SafeToMultiple10 = uint64(0xffffffffffffffff)/10 - 1 +const maxFloat64 = 1<<53 - 1 func init() { intDigits = make([]int8, 256)