From 00f24249876636dd47adbd486560b331209f1415 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Sat, 1 Feb 2025 14:08:35 -0800 Subject: [PATCH] Fix repeated message serialization in cpp yunq. --- lib/yunq/serialize.cpp | 2 +- lib/yunq/serialize.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/yunq/serialize.cpp b/lib/yunq/serialize.cpp index 7b7852d..9d58ac8 100644 --- a/lib/yunq/serialize.cpp +++ b/lib/yunq/serialize.cpp @@ -3,7 +3,7 @@ namespace yunq { namespace { -const uint64_t kIdentByte = 0x33441122; +const uint32_t kIdentByte = 0x33441122; } // namespace diff --git a/lib/yunq/serialize.h b/lib/yunq/serialize.h index b0c84c3..170917f 100644 --- a/lib/yunq/serialize.h +++ b/lib/yunq/serialize.h @@ -100,7 +100,7 @@ template void Serializer::WriteRepeatedMessage(uint64_t field_index, const glcr::Vector& value) { uint64_t next_offset = next_extension_; - uint64_t length = 0; + uint64_t length = value.size(); for (T& message : value) { uint64_t msg_length = 0; @@ -110,7 +110,6 @@ void Serializer::WriteRepeatedMessage(uint64_t field_index, } else { msg_length = message.SerializeToBytes(buffer_, offset_ + next_offset); } - length += msg_length; next_offset += msg_length; } @@ -119,7 +118,7 @@ void Serializer::WriteRepeatedMessage(uint64_t field_index, .length = (uint32_t)length, }; - next_extension_ += length; + next_extension_ = next_offset; buffer_.WriteAt(field_offset(field_index), ptr); }