neg = true
s = s[1:]
}
- x, rem, err := leadingInt(s)
+ q, rem, err := leadingInt(s)
+ x = int(q)
if err != nil || rem != "" {
return 0, atoiError
}
var errLeadingInt = errors.New("time: bad [0-9]*") // never printed
// leadingInt consumes the leading [0-9]* from s.
-func leadingInt(s string) (x int, rem string, err error) {
+func leadingInt(s string) (x int64, rem string, err error) {
i := 0
for ; i < len(s); i++ {
c := s[i]
if c < '0' || c > '9' {
break
}
- if x >= (1<<31-10)/10 {
+ if x >= (1<<63-10)/10 {
// overflow
return 0, "", errLeadingInt
}
- x = x*10 + int(c) - '0'
+ x = x*10 + int64(c) - '0'
}
return x, s[i:], nil
}
for s != "" {
g := float64(0) // this element of the sequence
- var x int
+ var x int64
var err error
// The next character must be [0-9.]
{"-2m3.4s", true, -(2*Minute + 3*Second + 400*Millisecond)},
{"1h2m3s4ms5us6ns", true, 1*Hour + 2*Minute + 3*Second + 4*Millisecond + 5*Microsecond + 6*Nanosecond},
{"39h9m14.425s", true, 39*Hour + 9*Minute + 14*Second + 425*Millisecond},
+ // large value
+ {"52763797000ns", true, 52763797000 * Nanosecond},
// errors
{"", false, 0},