From e2c2121f20bb8e90830f11d562e19d7244a14a5b Mon Sep 17 00:00:00 2001 From: Joshua Haberman Date: Thu, 13 Dec 2018 10:55:26 -0800 Subject: Use some hazzers in def.c. --- upb/def.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'upb') 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; -- cgit v1.2.3