mirror of
https://github.com/golang/go
synced 2024-11-23 23:20:08 -07:00
reflect: fix methodValueCall code pointer mismatch in Value.Pointer
This is the port of CL 356809 for Value.Pointer to fix the mismatch of methodValueCall code pointer. Change-Id: I080ac41b94b44d878cd5896207a76a28c57fd48b Reviewed-on: https://go-review.googlesource.com/c/go/+/356950 Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Cherry Mui <cherryyz@google.com>
This commit is contained in:
parent
d7149e502d
commit
07e5527249
@ -7724,9 +7724,12 @@ func TestNotInHeapDeref(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestMethodCallValueCodePtr(t *testing.T) {
|
||||
p := ValueOf(Point{}).Method(1).UnsafePointer()
|
||||
m := ValueOf(Point{}).Method(1)
|
||||
want := MethodValueCallCodePtr()
|
||||
if got := uintptr(p); got != want {
|
||||
if got := uintptr(m.UnsafePointer()); got != want {
|
||||
t.Errorf("methodValueCall code pointer mismatched, want: %v, got: %v", want, got)
|
||||
}
|
||||
if got := m.Pointer(); got != want {
|
||||
t.Errorf("methodValueCall code pointer mismatched, want: %v, got: %v", want, got)
|
||||
}
|
||||
}
|
||||
|
@ -1957,8 +1957,7 @@ func (v Value) Pointer() uintptr {
|
||||
// created via reflect have the same underlying code pointer,
|
||||
// so their Pointers are equal. The function used here must
|
||||
// match the one used in makeMethodValue.
|
||||
f := methodValueCall
|
||||
return **(**uintptr)(unsafe.Pointer(&f))
|
||||
return methodValueCallCodePtr()
|
||||
}
|
||||
p := v.pointer()
|
||||
// Non-nil func value points at data block.
|
||||
|
Loading…
Reference in New Issue
Block a user