internal/impl: fix non-atomic access of MessageState.mi
MessageState's mi field must only be accessed via atomic operations.
Rename the field to 'atomicMessageInfo' to make it incorrect access
obvious. Fix one incorrect non-atomic access.
Change-Id: If80343fb1b82186416f007ca5b340a4926b1cd3c
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/221419
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/internal/impl/message.go b/internal/impl/message.go
index 4d18b96..65de48a 100644
--- a/internal/impl/message.go
+++ b/internal/impl/message.go
@@ -100,9 +100,9 @@
func (mi *MessageInfo) getPointer(m pref.Message) (p pointer, ok bool) {
switch m := m.(type) {
case *messageState:
- return m.pointer(), m.mi == mi
+ return m.pointer(), m.messageInfo() == mi
case *messageReflectWrapper:
- return m.pointer(), m.mi == mi
+ return m.pointer(), m.messageInfo() == mi
}
return pointer{}, false
}