From 3d0c7c45da5b72a88bfb03dc5ce3384b7f01cef6 Mon Sep 17 00:00:00 2001 From: Josh Haberman Date: Tue, 18 Nov 2014 15:21:50 -0800 Subject: Sync to Google-internal development. --- upb/descriptor/reader.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'upb/descriptor/reader.c') diff --git a/upb/descriptor/reader.c b/upb/descriptor/reader.c index fdfa4e3..1baad81 100644 --- a/upb/descriptor/reader.c +++ b/upb/descriptor/reader.c @@ -272,6 +272,9 @@ static bool field_startmsg(void *closure, const void *hd) { r->f = upb_fielddef_new(&r->defs); free(r->default_string); r->default_string = NULL; + + // fielddefs default to packed, but descriptors default to non-packed. + upb_fielddef_setpacked(r->f, false); return true; } @@ -378,6 +381,13 @@ static bool field_onlazy(void *closure, const void *hd, bool val) { return true; } +static bool field_onpacked(void *closure, const void *hd, bool val) { + UPB_UNUSED(hd); + upb_descreader *r = closure; + upb_fielddef_setpacked(r->f, val); + return true; +} + static bool field_ontype(void *closure, const void *hd, int32_t val) { UPB_UNUSED(hd); upb_descreader *r = closure; @@ -552,6 +562,7 @@ static void reghandlers(const void *closure, upb_handlers *h) { &field_ondefaultval, NULL); } else if (m == D(FieldOptions)) { upb_handlers_setbool(h, D(FieldOptions_lazy), &field_onlazy, NULL); + upb_handlers_setbool(h, D(FieldOptions_packed), &field_onpacked, NULL); } } -- cgit v1.2.3