|
@@ -2065,7 +2065,15 @@ const FileDescriptor* DescriptorBuilder::BuildFile(
|
|
|
}
|
|
|
|
|
|
result->name_ = tables_->AllocateString(proto.name());
|
|
|
- result->package_ = tables_->AllocateString(proto.package());
|
|
|
+ if (proto.has_package()) {
|
|
|
+ result->package_ = tables_->AllocateString(proto.package());
|
|
|
+ } else {
|
|
|
+ // We cannot rely on proto.package() returning a valid string if
|
|
|
+ // proto.has_package() is false, because we might be running at static
|
|
|
+ // initialization time, in which case default values have not yet been
|
|
|
+ // initialized.
|
|
|
+ result->package_ = tables_->AllocateString("");
|
|
|
+ }
|
|
|
result->pool_ = pool_;
|
|
|
|
|
|
// Add to tables.
|