diff options
author | Rob Pike <r@golang.org> | 2010-07-01 14:44:21 -0700 |
---|---|---|
committer | Rob Pike <r@golang.org> | 2010-07-01 14:44:21 -0700 |
commit | 2b9df28a420f923d5d222413b93ca513fed5547d (patch) | |
tree | 594495eb6ce267bbd271af3ea619d7dc6a359191 | |
parent | b3fb215bd4973f0a8b52d49bcb90f31ca64ae781 (diff) | |
download | golang-2b9df28a420f923d5d222413b93ca513fed5547d.tar.gz |
strconv.Uitob64: allow conversion of 64-bit binaries (buffer was too small).
panic if base is invalid.
R=rsc
CC=golang-dev
http://codereview.appspot.com/1702050
-rw-r--r-- | src/pkg/strconv/itoa.go | 5 | ||||
-rw-r--r-- | src/pkg/strconv/itoa_test.go | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/pkg/strconv/itoa.go b/src/pkg/strconv/itoa.go index a63356053..a0a749664 100644 --- a/src/pkg/strconv/itoa.go +++ b/src/pkg/strconv/itoa.go @@ -6,12 +6,15 @@ package strconv // Uitob64 returns the string representation of i in the given base. func Uitob64(u uint64, base uint) string { + if base < 2 || 36 < base { + panic("invalid base " + Uitoa(base)) + } if u == 0 { return "0" } // Assemble decimal in reverse order. - var buf [32]byte + var buf [64]byte j := len(buf) b := uint64(base) for u > 0 { diff --git a/src/pkg/strconv/itoa_test.go b/src/pkg/strconv/itoa_test.go index e0624b547..039ef4446 100644 --- a/src/pkg/strconv/itoa_test.go +++ b/src/pkg/strconv/itoa_test.go @@ -50,6 +50,7 @@ var itob64tests = []itob64Test{ itob64Test{16, 16, "10"}, itob64Test{-0x123456789abcdef, 16, "-123456789abcdef"}, itob64Test{1<<63 - 1, 16, "7fffffffffffffff"}, + itob64Test{1<<63 - 1, 2, "111111111111111111111111111111111111111111111111111111111111111"}, itob64Test{16, 17, "g"}, itob64Test{25, 25, "10"}, @@ -135,6 +136,7 @@ var uitob64tests = []uitob64Test{ uitob64Test{1<<63 + 1, 10, "9223372036854775809"}, uitob64Test{1<<64 - 2, 10, "18446744073709551614"}, uitob64Test{1<<64 - 1, 10, "18446744073709551615"}, + uitob64Test{1<<64 - 1, 2, "1111111111111111111111111111111111111111111111111111111111111111"}, } func TestUitoa(t *testing.T) { |