internal/impl: fix map decode when value is before key
Fix a bug in handling the case where the encoding for a map item places
the value field (2) before the key field (1).
Change-Id: I2e6ad9af729a199e960e566ed7ef96bba3726990
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/211804
Reviewed-by: Joe Tsai <joetsai@google.com>
diff --git a/internal/impl/codec_map.go b/internal/impl/codec_map.go
index 5f7d9e2..94a1bc4 100644
--- a/internal/impl/codec_map.go
+++ b/internal/impl/codec_map.go
@@ -183,11 +183,12 @@
if wtyp != wire.BytesType {
break
}
- v, n := wire.ConsumeBytes(b)
+ var v []byte
+ v, n = wire.ConsumeBytes(b)
if n < 0 {
return 0, wire.ParseError(n)
}
- n, err = mapi.valMessageInfo.unmarshalPointer(v, pointerOfValue(val), 0, opts)
+ _, err = mapi.valMessageInfo.unmarshalPointer(v, pointerOfValue(val), 0, opts)
}
if err == errUnknown {
n = wire.ConsumeFieldValue(num, wtyp, b)