diff options
author | Josh Haberman <jhaberman@gmail.com> | 2018-09-06 23:16:58 -0700 |
---|---|---|
committer | Josh Haberman <jhaberman@gmail.com> | 2018-09-06 23:16:58 -0700 |
commit | a105c015b106b6be31fc45fdd4c568684815801c (patch) | |
tree | bbb66457418d6fd20b585bf23b5f2d61ac46a1bc /upb/decode.c | |
parent | ea19fa4ed6af171a787990270871e9dc0fd809f0 (diff) |
Added support for unknown fields to upb_msg.
After this CL, upb passes all existing proto3 conformance tests.
However the conformance suite is missing a lot of cases and should
be fleshed out.
Diffstat (limited to 'upb/decode.c')
-rw-r--r-- | upb/decode.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/upb/decode.c b/upb/decode.c index cd13125..fc0e644 100644 --- a/upb/decode.c +++ b/upb/decode.c @@ -130,9 +130,7 @@ static void upb_set32(void *msg, size_t ofs, uint32_t val) { static bool upb_append_unknown(upb_decstate *d, upb_decframe *frame, const char *start) { - UPB_UNUSED(d); - UPB_UNUSED(frame); - UPB_UNUSED(start); + upb_msg_addunknown(frame->msg, start, d->ptr - start); return true; } @@ -545,7 +543,9 @@ static bool upb_decode_field(upb_decstate *d, upb_decframe *frame) { } } else { CHK(field_number != 0); - return upb_skip_unknownfielddata(d, frame, field_number, wire_type); + CHK(upb_skip_unknownfielddata(d, frame, field_number, wire_type)); + CHK(upb_append_unknown(d, frame, field_start)); + return true; } } |