diff options
| author | Josh Bleecher Snyder <josharian@gmail.com> | 2021-03-14 14:24:47 -0700 |
|---|---|---|
| committer | Josh Bleecher Snyder <josharian@gmail.com> | 2021-04-21 00:53:48 +0000 |
| commit | faa4fa1a6e94fce4f6fa22524a2bece5125213b6 (patch) | |
| tree | ecd5c4b860564b5b1926725f6ffafcebfac3b3d9 /src/runtime/panic.go | |
| parent | 1c268431f49ee2fc843eac52a0854aea3d02a6e0 (diff) | |
| download | go-faa4fa1a6e94fce4f6fa22524a2bece5125213b6.tar.xz | |
cmd/compile: allow conversion from slice to array ptr
Panic if the slice is too short.
Updates #395
Change-Id: I90f4bff2da5d8f3148ba06d2482084f32b25c29a
Reviewed-on: https://go-review.googlesource.com/c/go/+/301650
Trust: Josh Bleecher Snyder <josharian@gmail.com>
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/runtime/panic.go')
| -rw-r--r-- | src/runtime/panic.go | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/runtime/panic.go b/src/runtime/panic.go index f8f2f39dbb..f6c38aafcc 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -160,6 +160,12 @@ func goPanicSlice3CU(x uint, y int) { panic(boundsError{x: int64(x), signed: false, y: y, code: boundsSlice3C}) } +// failures in the conversion (*[x]T)s, 0 <= x <= y, x == cap(s) +func goPanicSliceConvert(x int, y int) { + panicCheck1(getcallerpc(), "slice length too short to convert to pointer to array") + panic(boundsError{x: int64(x), signed: true, y: y, code: boundsConvert}) +} + // Implemented in assembly, as they take arguments in registers. // Declared here to mark them as ABIInternal. func panicIndex(x int, y int) @@ -178,6 +184,7 @@ func panicSlice3B(x int, y int) func panicSlice3BU(x uint, y int) func panicSlice3C(x int, y int) func panicSlice3CU(x uint, y int) +func panicSliceConvert(x int, y int) var shiftError = error(errorString("negative shift amount")) |
