summaryrefslogtreecommitdiff
path: root/upb/encode.c
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2018-09-07 10:05:19 -0700
committerGitHub <noreply@github.com>2018-09-07 10:05:19 -0700
commitb2a388212a208095300f1ff2f767af82dd9e59b2 (patch)
tree78bd6cdbd350a8c9fe1794a8b7e1965e627a6617 /upb/encode.c
parentea19fa4ed6af171a787990270871e9dc0fd809f0 (diff)
parent950d7a9530701c52edd93569364934b7944a197c (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.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