diff options
author | Joshua Haberman <jhaberman@gmail.com> | 2018-09-07 10:05:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-07 10:05:19 -0700 |
commit | b2a388212a208095300f1ff2f767af82dd9e59b2 (patch) | |
tree | 78bd6cdbd350a8c9fe1794a8b7e1965e627a6617 /upb/encode.c | |
parent | ea19fa4ed6af171a787990270871e9dc0fd809f0 (diff) | |
parent | 950d7a9530701c52edd93569364934b7944a197c (diff) |
Merge pull request #124 from haberman/unknown
Added support for unknown fields to upb_msg.
Diffstat (limited to 'upb/encode.c')
-rw-r--r-- | upb/encode.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/upb/encode.c b/upb/encode.c index a9f2c0d..bff8262 100644 --- a/upb/encode.c +++ b/upb/encode.c @@ -331,6 +331,8 @@ bool upb_encode_message(upb_encstate *e, const char *msg, const upb_msglayout *m, size_t *size) { int i; size_t pre_len = e->limit - e->ptr; + const char *unknown; + size_t unknown_size; for (i = m->field_count - 1; i >= 0; i--) { const upb_msglayout_field *f = &m->fields[i]; @@ -357,6 +359,12 @@ bool upb_encode_message(upb_encstate *e, const char *msg, } } + unknown = upb_msg_getunknown(msg, &unknown_size); + + if (unknown) { + upb_put_bytes(e, unknown, unknown_size); + } + *size = (e->limit - e->ptr) - pre_len; return true; } |