goprotobuf: Ensure GetExtension returns the same result when called on a freshly unmarshaled message.
LGTM=djd
R=djd
CC=golang-codereviews
https://codereview.appspot.com/178920043
diff --git a/proto/extensions.go b/proto/extensions.go
index e592053..fca7bde 100644
--- a/proto/extensions.go
+++ b/proto/extensions.go
@@ -227,7 +227,8 @@
return nil, err
}
- e, ok := pb.ExtensionMap()[extension.Field]
+ emap := pb.ExtensionMap()
+ e, ok := emap[extension.Field]
if !ok {
return nil, ErrMissingExtension
}
@@ -252,6 +253,7 @@
e.value = v
e.desc = extension
e.enc = nil
+ emap[extension.Field] = e
return e.value, nil
}