summaryrefslogtreecommitdiff
path: root/upb/pb/decoder.c
diff options
context:
space:
mode:
Diffstat (limited to 'upb/pb/decoder.c')
-rw-r--r--upb/pb/decoder.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/upb/pb/decoder.c b/upb/pb/decoder.c
index 1098e63..d774ebd 100644
--- a/upb/pb/decoder.c
+++ b/upb/pb/decoder.c
@@ -567,7 +567,8 @@ static int32_t dispatch(upb_pbdecoder *d) {
// Lookup tag. Because of packed/non-packed compatibility, we have to
// check the wire type against two possibilities.
upb_value val;
- if (upb_inttable_lookup32(dispatch, fieldnum, &val)) {
+ if (fieldnum != DISPATCH_ENDMSG &&
+ upb_inttable_lookup32(dispatch, fieldnum, &val)) {
uint64_t v = upb_value_getuint64(val);
if (wire_type == (v & 0xff)) {
d->pc = d->top->base + (v >> 16);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback