diff options
| author | Ingo Oeser <ingo@jimdo.com> | 2013-06-14 23:23:01 +0200 |
|---|---|---|
| committer | Ingo Oeser <ingo@jimdo.com> | 2013-06-14 23:23:01 +0200 |
| commit | def402c72200b15396ef69eb061939e77ac69b51 (patch) | |
| tree | 787ee6a96f828a48d1a97154de011adf27276403 /src/pkg/reflect/all_test.go | |
| parent | 36f57d659c29f20b9a1adbda1e7a88c818d14f11 (diff) | |
| parent | 09f84a75bc63a6316d575f531489d69ec8ade2e8 (diff) | |
| download | golang-def402c72200b15396ef69eb061939e77ac69b51.tar.gz | |
Merge tag 'upstream/1.1.1' into debian-sid
Upstream version 1.1.1
Diffstat (limited to 'src/pkg/reflect/all_test.go')
| -rw-r--r-- | src/pkg/reflect/all_test.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/pkg/reflect/all_test.go b/src/pkg/reflect/all_test.go index 56cb315ad..a61f66308 100644 --- a/src/pkg/reflect/all_test.go +++ b/src/pkg/reflect/all_test.go @@ -3032,6 +3032,25 @@ func TestSliceOf(t *testing.T) { checkSameType(t, Zero(SliceOf(TypeOf(T1(1)))).Interface(), []T1{}) } +func TestSliceOverflow(t *testing.T) { + // check that MakeSlice panics when size of slice overflows uint + const S = 1e6 + s := uint(S) + l := (1<<(unsafe.Sizeof((*byte)(nil))*8)-1)/s + 1 + if l*s >= s { + t.Fatal("slice size does not overflow") + } + var x [S]byte + st := SliceOf(TypeOf(x)) + defer func() { + err := recover() + if err == nil { + t.Fatal("slice overflow does not panic") + } + }() + MakeSlice(st, int(l), int(l)) +} + func TestSliceOfGC(t *testing.T) { type T *uintptr tt := TypeOf(T(nil)) |
