mirror of
https://github.com/golang/go
synced 2024-11-26 21:21:34 -07:00
cmd/compile: prevent panic while formatting func(...T) with unknown T
Compile: package p var f = func(...A) Before this CL: x.go:3:13: type %!v(PANIC=runtime error: invalid memory address or nil pointer dereference) is not an expression x.go:3:17: undefined: A After this CL: x.go:3:13: type func(...<T>) is not an expression x.go:3:17: undefined: A Found with go-fuzz. Fixes #20233 Change-Id: Ibb232b3954c4091071440eba48b44c4022a8083f Reviewed-on: https://go-review.googlesource.com/42610 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
25db5d1a87
commit
f2c5f57a87
@ -1754,7 +1754,11 @@ func fldconv(f *types.Field, flag FmtFlag, mode fmtMode, depth int) string {
|
||||
|
||||
var typ string
|
||||
if f.Isddd() {
|
||||
typ = "..." + tmodeString(f.Type.Elem(), mode, depth)
|
||||
var et *types.Type
|
||||
if f.Type != nil {
|
||||
et = f.Type.Elem()
|
||||
}
|
||||
typ = "..." + tmodeString(et, mode, depth)
|
||||
} else {
|
||||
typ = tmodeString(f.Type, mode, depth)
|
||||
}
|
||||
|
11
test/fixedbugs/issue20233.go
Normal file
11
test/fixedbugs/issue20233.go
Normal file
@ -0,0 +1,11 @@
|
||||
// errorcheck
|
||||
|
||||
// Copyright 2017 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// Issue 20233: panic while formatting an error message
|
||||
|
||||
package p
|
||||
|
||||
var f = func(...A) // ERROR "type func(....*) is not an expression" ERROR "undefined: A"
|
Loading…
Reference in New Issue
Block a user