From 774a10798c673567ce71c24e4bd3d8cac5465c44 Mon Sep 17 00:00:00 2001 From: Tony Liao Date: Tue, 29 Oct 2024 16:18:41 -0700 Subject: [PATCH] Remove dead branch in protobuf reflection for message fields. Message fields can never have implicit presence, but we have logic in ClearField that deallocates the message field and reassigns nullptr if the field is a "proto3" field. This snippet is the remnants of an old implementation of message field reflection when proto3 was first introduced (when the initial idea is to use open structs for everything). During implementation however, we ended up preserving explicit presence behavior for message fields. PiperOrigin-RevId: 691199008 --- src/google/protobuf/generated_message_reflection.cc | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/google/protobuf/generated_message_reflection.cc b/src/google/protobuf/generated_message_reflection.cc index 9cea6662aa..6e13104afd 100644 --- a/src/google/protobuf/generated_message_reflection.cc +++ b/src/google/protobuf/generated_message_reflection.cc @@ -1492,16 +1492,7 @@ void Reflection::ClearField(Message* message, } case FieldDescriptor::CPPTYPE_MESSAGE: - if (schema_.HasBitIndex(field) == static_cast(-1)) { - // Proto3 does not have has-bits and we need to set a message field - // to nullptr in order to indicate its un-presence. - if (message->GetArena() == nullptr) { - delete *MutableRaw(message, field); - } - *MutableRaw(message, field) = nullptr; - } else { - (*MutableRaw(message, field))->Clear(); - } + (*MutableRaw(message, field))->Clear(); break; } }