summaryrefslogtreecommitdiff
path: root/upb/def.c
diff options
context:
space:
mode:
authorJoshua Haberman <jhaberman@gmail.com>2018-12-13 10:55:26 -0800
committerJoshua Haberman <jhaberman@gmail.com>2018-12-13 10:55:26 -0800
commite2c2121f20bb8e90830f11d562e19d7244a14a5b (patch)
treeda27bd90632ff573d2e755a6b639fcf6bb04cf1c /upb/def.c
parent101aeba0fb7522880e2164c733c0218293384f50 (diff)
Use some hazzers in def.c.
Diffstat (limited to 'upb/def.c')
-rw-r--r--upb/def.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/upb/def.c b/upb/def.c
index ab8a8b7..e9acd43 100644
--- a/upb/def.c
+++ b/upb/def.c
@@ -1133,7 +1133,7 @@ static bool create_fielddef(
upb_alloc *alloc = ctx->alloc;
upb_fielddef *f;
const google_protobuf_FieldOptions *options;
- upb_stringview defaultval, name;
+ upb_stringview name;
upb_value packed_v = pack_def(f, UPB_DEFTYPE_FIELD);
upb_value v = upb_value_constptr(f);
const char *full_name;
@@ -1220,17 +1220,20 @@ static bool create_fielddef(
f->oneof = NULL;
}
- defaultval = google_protobuf_FieldDescriptorProto_default_value(field_proto);
-
- if (defaultval.data) {
+ if (google_protobuf_FieldDescriptorProto_has_default_value(field_proto)) {
+ upb_stringview defaultval =
+ google_protobuf_FieldDescriptorProto_default_value(field_proto);
CHK(parse_default(ctx, defaultval.data, defaultval.size, f));
}
- options = google_protobuf_FieldDescriptorProto_options(field_proto);
- if (options) {
+ if (google_protobuf_FieldDescriptorProto_has_options(field_proto)) {
+ options = google_protobuf_FieldDescriptorProto_options(field_proto);
f->lazy_ = google_protobuf_FieldOptions_lazy(options);
f->packed_ = google_protobuf_FieldOptions_packed(options);
+ } else {
+ f->lazy_ = false;
+ f->packed_ = false;
}
return true;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback