Merge pull request #3503 from gburgessiv/master

Work around a bug in clang's static analyzer
pull/3508/merge
Jisi Liu 7 years ago committed by GitHub
commit 98a3734b5a
  1. 5
      src/google/protobuf/metadata_lite.h

@ -150,8 +150,11 @@ class InternalMetadataWithArenaBase {
GOOGLE_ATTRIBUTE_NOINLINE T* mutable_unknown_fields_slow() { GOOGLE_ATTRIBUTE_NOINLINE T* mutable_unknown_fields_slow() {
Arena* my_arena = arena(); Arena* my_arena = arena();
Container* container = Arena::Create<Container>(my_arena); Container* container = Arena::Create<Container>(my_arena);
// Two-step assignment works around a bug in clang's static analyzer:
// https://bugs.llvm.org/show_bug.cgi?id=34198.
ptr_ = container;
ptr_ = reinterpret_cast<void*>( ptr_ = reinterpret_cast<void*>(
reinterpret_cast<intptr_t>(container) | kTagContainer); reinterpret_cast<intptr_t>(ptr_) | kTagContainer);
container->arena = my_arena; container->arena = my_arena;
return &(container->unknown_fields); return &(container->unknown_fields);
} }

Loading…
Cancel
Save