Skip to content

Commit bcf3e36

Browse files
Let ParseRepeatedStringOnce call AllocateFromStringBlock().
PiperOrigin-RevId: 542617650
1 parent fd5167d commit bcf3e36

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/google/protobuf/generated_message_tctable_impl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -808,8 +808,8 @@ class PROTOBUF_EXPORT TcParser final {
808808
static inline const char* RepeatedString(PROTOBUF_TC_PARAM_DECL);
809809

810810
static inline const char* ParseRepeatedStringOnce(
811-
const char* ptr, Arena* arena, SerialArena* serial_arena,
812-
ParseContext* ctx, RepeatedPtrField<std::string>& field);
811+
const char* ptr, SerialArena* serial_arena, ParseContext* ctx,
812+
RepeatedPtrField<std::string>& field);
813813

814814
static void AddUnknownEnum(MessageLite* msg, const TcParseTableBase* table,
815815
uint32_t tag, int32_t enum_value);

src/google/protobuf/generated_message_tctable_lite.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,7 @@ PROTOBUF_ALWAYS_INLINE const char* TcParser::RepeatedString(
16841684
field.PrepareForParse())) {
16851685
do {
16861686
ptr += sizeof(TagType);
1687-
ptr = ParseRepeatedStringOnce(ptr, arena, serial_arena, ctx, field);
1687+
ptr = ParseRepeatedStringOnce(ptr, serial_arena, ctx, field);
16881688

16891689
if (PROTOBUF_PREDICT_FALSE(ptr == nullptr || !validate_last_string())) {
16901690
PROTOBUF_MUSTTAIL return Error(PROTOBUF_TC_PARAM_NO_DATA_PASS);
@@ -2273,11 +2273,11 @@ PROTOBUF_NOINLINE const char* TcParser::MpString(PROTOBUF_TC_PARAM_DECL) {
22732273
}
22742274

22752275
PROTOBUF_ALWAYS_INLINE const char* TcParser::ParseRepeatedStringOnce(
2276-
const char* ptr, Arena* arena, SerialArena* serial_arena, ParseContext* ctx,
2276+
const char* ptr, SerialArena* serial_arena, ParseContext* ctx,
22772277
RepeatedPtrField<std::string>& field) {
22782278
int size = ReadSize(&ptr);
22792279
if (PROTOBUF_PREDICT_FALSE(!ptr)) return {};
2280-
auto* str = Arena::Create<std::string>(arena);
2280+
auto* str = new (serial_arena->AllocateFromStringBlock()) std::string();
22812281
field.AddAllocatedForParse(str);
22822282
ptr = ctx->ReadString(ptr, size, str);
22832283
if (PROTOBUF_PREDICT_FALSE(!ptr)) return {};
@@ -2312,7 +2312,7 @@ PROTOBUF_NOINLINE const char* TcParser::MpRepeatedString(
23122312
field.PrepareForParse())) {
23132313
do {
23142314
ptr = ptr2;
2315-
ptr = ParseRepeatedStringOnce(ptr, arena, serial_arena, ctx, field);
2315+
ptr = ParseRepeatedStringOnce(ptr, serial_arena, ctx, field);
23162316
if (PROTOBUF_PREDICT_FALSE(ptr == nullptr ||
23172317
!MpVerifyUtf8(field[field.size() - 1],
23182318
table, entry, xform_val))) {

0 commit comments

Comments
 (0)