summaryrefslogtreecommitdiff
path: root/src/upb_stream_vtbl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/upb_stream_vtbl.h')
-rw-r--r--src/upb_stream_vtbl.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/upb_stream_vtbl.h b/src/upb_stream_vtbl.h
index 10ee917..e9a4043 100644
--- a/src/upb_stream_vtbl.h
+++ b/src/upb_stream_vtbl.h
@@ -186,6 +186,12 @@ INLINE upb_flow_t upb_startsubmsg_nop(void *closure, struct _upb_fielddef *f,
return UPB_CONTINUE;
}
+INLINE upb_flow_t upb_endsubmsg_nop(void *closure, struct _upb_fielddef *f) {
+ (void)closure;
+ (void)f;
+ return UPB_CONTINUE;
+}
+
INLINE upb_flow_t upb_unknownval_nop(void *closure, upb_field_number_t fieldnum,
upb_value val) {
(void)closure;
@@ -199,7 +205,7 @@ INLINE void upb_register_handlerset(upb_handlers *h, upb_handlerset *set) {
if (!set->endmsg) set->endmsg = &upb_nop;
if (!set->value) set->value = &upb_value_nop;
if (!set->startsubmsg) set->startsubmsg = &upb_startsubmsg_nop;
- if (!set->endsubmsg) set->endsubmsg = &upb_nop;
+ if (!set->endsubmsg) set->endsubmsg = &upb_endsubmsg_nop;
if (!set->unknownval) set->unknownval = &upb_unknownval_nop;
h->set = set;
}
@@ -264,7 +270,8 @@ INLINE upb_flow_t upb_dispatch_startsubmsg(upb_dispatcher *d,
return ret;
}
-INLINE upb_flow_t upb_dispatch_endsubmsg(upb_dispatcher *d) {
+INLINE upb_flow_t upb_dispatch_endsubmsg(upb_dispatcher *d,
+ struct _upb_fielddef *f) {
upb_flow_t ret;
if (--d->top->depth == 0) {
ret = d->top->handlers.set->endmsg(d->top->handlers.closure);
@@ -273,7 +280,7 @@ INLINE upb_flow_t upb_dispatch_endsubmsg(upb_dispatcher *d) {
--d->top;
assert(d->top >= d->stack);
}
- return d->top->handlers.set->endsubmsg(d->top->handlers.closure);
+ return d->top->handlers.set->endsubmsg(d->top->handlers.closure, f);
}
INLINE upb_flow_t upb_dispatch_value(upb_dispatcher *d,
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback