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.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/upb/pb/decoder.c b/upb/pb/decoder.c
index 182ecc9..79142bf 100644
--- a/upb/pb/decoder.c
+++ b/upb/pb/decoder.c
@@ -543,6 +543,9 @@ UPB_NOINLINE int32_t upb_pbdecoder_checktag_slow(upb_pbdecoder *d,
int32_t upb_pbdecoder_skipunknown(upb_pbdecoder *d, int32_t fieldnum,
uint8_t wire_type) {
+ upb_addunknown_handlerfunc *addunknown;
+ const void* hd;
+
if (fieldnum >= 0)
goto have_tag;
@@ -596,6 +599,14 @@ have_tag:
}
if (d->top->groupnum >= 0) {
+ addunknown = (upb_addunknown_handlerfunc *)upb_handlers_gethandler(
+ (d->top->sink).handlers, UPB_UNKNOWN_SELECTOR);
+ if (addunknown != NULL) {
+ hd = upb_handlers_gethandlerdata((d->top->sink).handlers,
+ UPB_UNKNOWN_SELECTOR);
+ addunknown((d->top->sink).closure, hd, d->checkpoint,
+ d->ptr - d->checkpoint);
+ }
return DECODE_OK;
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback