diff options
author | Josh Haberman <jhaberman@gmail.com> | 2014-11-18 15:21:50 -0800 |
---|---|---|
committer | Josh Haberman <jhaberman@gmail.com> | 2014-11-18 15:21:50 -0800 |
commit | 3d0c7c45da5b72a88bfb03dc5ce3384b7f01cef6 (patch) | |
tree | 1c9fd69700e1162c7ed78458160800b586600c9b /upb/descriptor/reader.c | |
parent | 648afe3da654b6e08fe6ea26ae520581eb892e23 (diff) |
Sync to Google-internal development.
Diffstat (limited to 'upb/descriptor/reader.c')
-rw-r--r-- | upb/descriptor/reader.c | 11 |
1 files changed, 11 insertions, 0 deletions
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); } } |