Note that Buffer.Unmarshal does NOT reset the destination protobuf.
When repeatedly Unmarshalling into the same destination, this can cause a memory leak.
PiperOrigin-RevId: 135304939
diff --git a/proto/decode.go b/proto/decode.go
index 04dcb88..a54a8cc 100644
--- a/proto/decode.go
+++ b/proto/decode.go
@@ -340,6 +340,8 @@
// Buffer and places the decoded result in pb. If the struct
// underlying pb does not match the data in the buffer, the results can be
// unpredictable.
+//
+// Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal.
func (p *Buffer) Unmarshal(pb Message) error {
// If the object can unmarshal itself, let it.
if u, ok := pb.(Unmarshaler); ok {