fix issue 510
diff --git a/iter_float.go b/iter_float.go
index b975463..8a3d8b6 100644
--- a/iter_float.go
+++ b/iter_float.go
@@ -288,6 +288,9 @@
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 cb8d1e5..d786a89 100644
--- a/iter_int.go
+++ b/iter_int.go
@@ -9,6 +9,7 @@
const uint32SafeToMultiply10 = uint32(0xffffffff)/10 - 1
const uint64SafeToMultiple10 = uint64(0xffffffffffffffff)/10 - 1
+const maxFloat64 = 1<<53 - 1
func init() {
intDigits = make([]int8, 256)