mirror of
https://github.com/golang/go.git
synced 2025-05-17 13:24:38 +00:00
runtime: allow calling Func.Name on nil pointer
The Func type has allowed calling the Func.Name method on a nil pointer since Go1.2, where it returned an empty string. A regression caused by CL/37331 caused this behavior to change. This breaks code that lazily does runtime.FuncForPC(myPtr).Name() without first checking that myPtr is actually non-nil. Fixes #20872 Change-Id: Iae9a2ebabca5e9d1f5a2cdaf2f30e9c6198fec4f Reviewed-on: https://go-review.googlesource.com/47354 Reviewed-by: Marvin Stenger <marvin.stenger94@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
445652f453
commit
a776087ee3
@ -579,6 +579,9 @@ func FuncForPC(pc uintptr) *Func {
|
||||
|
||||
// Name returns the name of the function.
|
||||
func (f *Func) Name() string {
|
||||
if f == nil {
|
||||
return ""
|
||||
}
|
||||
return funcname(f.funcInfo())
|
||||
}
|
||||
|
||||
|
@ -154,3 +154,14 @@ func TestLineNumber(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNilName(t *testing.T) {
|
||||
defer func() {
|
||||
if ex := recover(); ex != nil {
|
||||
t.Fatalf("expected no nil panic, got=%v", ex)
|
||||
}
|
||||
}()
|
||||
if got := (*runtime.Func)(nil).Name(); got != "" {
|
||||
t.Errorf("Name() = %q, want %q", got, "")
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user