Migrate callers of the RepeatedPtrField(Arena*) constructor to `ArenaSafeUniquePtr`.
PiperOrigin-RevId: 803757833
diff --git a/src/google/protobuf/arena_unittest.cc b/src/google/protobuf/arena_unittest.cc
index ecf7b88..2898df1 100644
--- a/src/google/protobuf/arena_unittest.cc
+++ b/src/google/protobuf/arena_unittest.cc
@@ -1455,25 +1455,26 @@
// newly allocated memory is approximately the size of the cleanups for the
// repeated messages.
RepeatedField<int32_t> repeated_int32(&arena);
- RepeatedPtrField<TestAllTypes> repeated_message(&arena);
+ auto* repeated_message =
+ Arena::Create<RepeatedPtrField<TestAllTypes>>(&arena);
for (int i = 0; i < 100; i++) {
repeated_int32.Add(42);
- repeated_message.Add()->set_optional_int32(42);
- EXPECT_EQ(&arena, repeated_message.Get(0).GetArena());
- const TestAllTypes* msg_in_repeated_field = &repeated_message.Get(0);
- TestAllTypes* msg = repeated_message.UnsafeArenaReleaseLast();
+ repeated_message->Add()->set_optional_int32(42);
+ EXPECT_EQ(&arena, repeated_message->Get(0).GetArena());
+ const TestAllTypes* msg_in_repeated_field = &repeated_message->Get(0);
+ TestAllTypes* msg = repeated_message->UnsafeArenaReleaseLast();
EXPECT_EQ(msg_in_repeated_field, msg);
}
// UnsafeArenaExtractSubrange (i) should not leak and (ii) should return
// on-arena pointers.
for (int i = 0; i < 10; i++) {
- repeated_message.Add()->set_optional_int32(42);
+ repeated_message->Add()->set_optional_int32(42);
}
TestAllTypes* extracted_messages[5];
- repeated_message.UnsafeArenaExtractSubrange(0, 5, extracted_messages);
- EXPECT_EQ(&arena, repeated_message.Get(0).GetArena());
- EXPECT_EQ(5, repeated_message.size());
+ repeated_message->UnsafeArenaExtractSubrange(0, 5, extracted_messages);
+ EXPECT_EQ(&arena, repeated_message->Get(0).GetArena());
+ EXPECT_EQ(5, repeated_message->size());
// Upper bound of the size of the cleanups of new repeated messages.
const size_t upperbound_cleanup_size =
2 * 110 * sizeof(internal::cleanup::CleanupNode);
@@ -1483,14 +1484,15 @@
// Now test ExtractSubrange's copying semantics.
{
- RepeatedPtrField<TestAllTypes> repeated_message(&arena);
+ auto* repeated_message =
+ Arena::Create<RepeatedPtrField<TestAllTypes>>(&arena);
for (int i = 0; i < 100; i++) {
- repeated_message.Add()->set_optional_int32(42);
+ repeated_message->Add()->set_optional_int32(42);
}
TestAllTypes* extracted_messages[5];
// ExtractSubrange should copy to the heap.
- repeated_message.ExtractSubrange(0, 5, extracted_messages);
+ repeated_message->ExtractSubrange(0, 5, extracted_messages);
EXPECT_EQ(nullptr, extracted_messages[0]->GetArena());
// We need to free the heap-allocated messages to prevent a leak.
for (int i = 0; i < 5; i++) {