internal/impl: allow reflection on typed nil pointers
Similar to how generated messages allow you to call Get methods on a
nil pointer, we permit similar functionality when protobuf reflection
is used on a nil pointer.
Change-Id: Ie2f596d39105c191073b42d7d689525c3b715240
Reviewed-on: https://go-review.googlesource.com/c/152021
Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/internal/impl/message.go b/internal/impl/message.go
index 089c6e7..328103c 100644
--- a/internal/impl/message.go
+++ b/internal/impl/message.go
@@ -169,7 +169,7 @@
func (mi *MessageType) dataTypeOf(p interface{}) *messageDataType {
mi.init(p)
- return &messageDataType{pointerOfIface(&p), mi}
+ return &messageDataType{pointerOfIface(p), mi}
}
// messageDataType is a tuple of a pointer to the message data and
@@ -216,7 +216,7 @@
return m
}
func (m *messageWrapper) ProtoUnwrap() interface{} {
- return m.p.asType(m.mi.goType.Elem()).Interface()
+ return m.p.AsIfaceOf(m.mi.goType.Elem())
}
func (m *messageWrapper) ProtoMutable() {}