diff options
author | liujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2012-12-05 05:54:48 +0000 |
---|---|---|
committer | liujisi@google.com <liujisi@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2012-12-05 05:54:48 +0000 |
commit | f5d5b4de92710812929d9c82250959cb73daa11b (patch) | |
tree | 82cfdc5cb6ad8c84f50923f7826aca618034c4e8 /src/google/protobuf/descriptor.cc | |
parent | e34f1f63b6080c5966559a7a09e90eb05d15cefc (diff) |
Make custom option able to work for -f-no-rtti; Fix remaining death tests for gtest 1.6
Diffstat (limited to 'src/google/protobuf/descriptor.cc')
-rw-r--r-- | src/google/protobuf/descriptor.cc | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 725ae239..f808b833 100644 --- a/src/google/protobuf/descriptor.cc +++ b/src/google/protobuf/descriptor.cc @@ -2987,7 +2987,11 @@ template<class DescriptorT> void DescriptorBuilder::AllocateOptionsImpl( // tables_->AllocateMessage<typename DescriptorT::OptionsType>(); typename DescriptorT::OptionsType* const dummy = NULL; typename DescriptorT::OptionsType* options = tables_->AllocateMessage(dummy); - options->CopyFrom(orig_options); + // Avoid using MergeFrom()/CopyFrom() in this class to make it -fno-rtti + // friendly. Without RTTI, MergeFrom() and CopyFrom() will fallback to the + // reflection based method, which requires the Descriptor. However, we are in + // the middle of building the descriptors, thus the deadlock. + options->ParseFromString(orig_options.SerializeAsString()); descriptor->options_ = options; // Don't add to options_to_interpret_ unless there were uninterpreted |