summaryrefslogtreecommitdiff
path: root/upb/encode.c
diff options
context:
space:
mode:
Diffstat (limited to 'upb/encode.c')
-rw-r--r--upb/encode.c8
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;
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback