From 0a4fcd5d979c294ae3112f40cbcc0169a37070dd Mon Sep 17 00:00:00 2001 From: Adam Cozzette Date: Wed, 4 Aug 2021 12:48:14 -0700 Subject: [PATCH] Fix memory leak in InlinedStringField --- src/google/protobuf/inlined_string_field.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/google/protobuf/inlined_string_field.h b/src/google/protobuf/inlined_string_field.h index 9f4551161d..17373f5118 100644 --- a/src/google/protobuf/inlined_string_field.h +++ b/src/google/protobuf/inlined_string_field.h @@ -297,7 +297,12 @@ inline InlinedStringField::InlinedStringField( new (get_mutable()) std::string(default_value); } -inline InlinedStringField::InlinedStringField(Arena* /*arena*/) { Init(); } +inline InlinedStringField::InlinedStringField(Arena* arena) { + Init(); + if (arena != nullptr) { + arena->OwnDestructor(get_mutable()); + } +} inline const std::string& InlinedStringField::GetNoArena() const { return *get_const();