-
Notifications
You must be signed in to change notification settings - Fork 18.4k
Description
What version of Go are you using (go version
)?
1.8.1
What operating system and processor architecture are you using (go env
)?
linux/386
What did you do?
I called base64.RawStdEncoding.EncodedLen()
with 1<<30
(2 to the 30th power) on a 32-bit platform, as in line 9 of https://play.golang.org/p/mV9110MxJ- , and base64.StdEncoding.EncodedLen()
with 1<<31 / 4 * 3
(equal to 1,610,612,736) as in line 10 of the same example.
Line 10 also calls the method with the same argument on base64.StdEncoding
for comparison.
What did you expect to see?
I expected EncodedLen()
on RawStdEncoding
to return a value close to that returned by StdEncoding
for 1<<30
I think 1,431,655,766 is the correct value, but I may have miscalculated) and EncodedLen()
on StdEncoding
to not return a negative encoded length for 1<<31 / 4 * 3
(perhaps to panic? I'm not certain what the appropriate behavior here is).
What did you see instead?
Instead the first example returned 0
and the second -2147483648
. Neither of these values are sufficient to hold a base64 encoding of a string of the supplied lengths.