Skip to content

Commit 2be4a2d

Browse files
ClaytonKnittelcopybara-github
authored andcommitted
Migrate callers of the RepeatedPtrField(Arena*) constructor to ArenaSafeUniquePtr.
PiperOrigin-RevId: 803757833
1 parent b1b5a38 commit 2be4a2d

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

src/google/protobuf/arena_unittest.cc

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,25 +1455,26 @@ TEST(ArenaTest, RepeatedFieldOnArena) {
14551455
// newly allocated memory is approximately the size of the cleanups for the
14561456
// repeated messages.
14571457
RepeatedField<int32_t> repeated_int32(&arena);
1458-
RepeatedPtrField<TestAllTypes> repeated_message(&arena);
1458+
auto* repeated_message =
1459+
Arena::Create<RepeatedPtrField<TestAllTypes>>(&arena);
14591460
for (int i = 0; i < 100; i++) {
14601461
repeated_int32.Add(42);
1461-
repeated_message.Add()->set_optional_int32(42);
1462-
EXPECT_EQ(&arena, repeated_message.Get(0).GetArena());
1463-
const TestAllTypes* msg_in_repeated_field = &repeated_message.Get(0);
1464-
TestAllTypes* msg = repeated_message.UnsafeArenaReleaseLast();
1462+
repeated_message->Add()->set_optional_int32(42);
1463+
EXPECT_EQ(&arena, repeated_message->Get(0).GetArena());
1464+
const TestAllTypes* msg_in_repeated_field = &repeated_message->Get(0);
1465+
TestAllTypes* msg = repeated_message->UnsafeArenaReleaseLast();
14651466
EXPECT_EQ(msg_in_repeated_field, msg);
14661467
}
14671468

14681469
// UnsafeArenaExtractSubrange (i) should not leak and (ii) should return
14691470
// on-arena pointers.
14701471
for (int i = 0; i < 10; i++) {
1471-
repeated_message.Add()->set_optional_int32(42);
1472+
repeated_message->Add()->set_optional_int32(42);
14721473
}
14731474
TestAllTypes* extracted_messages[5];
1474-
repeated_message.UnsafeArenaExtractSubrange(0, 5, extracted_messages);
1475-
EXPECT_EQ(&arena, repeated_message.Get(0).GetArena());
1476-
EXPECT_EQ(5, repeated_message.size());
1475+
repeated_message->UnsafeArenaExtractSubrange(0, 5, extracted_messages);
1476+
EXPECT_EQ(&arena, repeated_message->Get(0).GetArena());
1477+
EXPECT_EQ(5, repeated_message->size());
14771478
// Upper bound of the size of the cleanups of new repeated messages.
14781479
const size_t upperbound_cleanup_size =
14791480
2 * 110 * sizeof(internal::cleanup::CleanupNode);
@@ -1483,14 +1484,15 @@ TEST(ArenaTest, RepeatedFieldOnArena) {
14831484

14841485
// Now test ExtractSubrange's copying semantics.
14851486
{
1486-
RepeatedPtrField<TestAllTypes> repeated_message(&arena);
1487+
auto* repeated_message =
1488+
Arena::Create<RepeatedPtrField<TestAllTypes>>(&arena);
14871489
for (int i = 0; i < 100; i++) {
1488-
repeated_message.Add()->set_optional_int32(42);
1490+
repeated_message->Add()->set_optional_int32(42);
14891491
}
14901492

14911493
TestAllTypes* extracted_messages[5];
14921494
// ExtractSubrange should copy to the heap.
1493-
repeated_message.ExtractSubrange(0, 5, extracted_messages);
1495+
repeated_message->ExtractSubrange(0, 5, extracted_messages);
14941496
EXPECT_EQ(nullptr, extracted_messages[0]->GetArena());
14951497
// We need to free the heap-allocated messages to prevent a leak.
14961498
for (int i = 0; i < 5; i++) {

0 commit comments

Comments
 (0)