diff --git a/src/common/packet-metadata.cc b/src/common/packet-metadata.cc index 0582577ef..55ec08bad 100644 --- a/src/common/packet-metadata.cc +++ b/src/common/packet-metadata.cc @@ -398,28 +398,23 @@ PacketMetadata::AddSmall (const struct PacketMetadata::SmallItem *item) uint32_t typeUidSize = GetUleb128Size (item->typeUid); uint32_t sizeSize = GetUleb128Size (item->size); uint32_t n = typeUidSize + sizeSize + 2 + 2 + 2; - restart: - if (m_used + n <= m_data->m_size && - (m_head == 0xffff || - m_data->m_count == 1 || - m_used == m_data->m_dirtyEnd)) - { - uint8_t *buffer = &m_data->m_data[m_used]; - Append16 (item->next, buffer); - buffer += 2; - Append16 (item->prev, buffer); - buffer += 2; - AppendValue (item->typeUid, buffer); - buffer += typeUidSize; - AppendValue (item->size, buffer); - buffer += sizeSize; - Append16 (item->chunkUid, buffer); - } - else + if (m_used + n > m_data->m_size || + (m_head != 0xffff && + m_data->m_count != 1 && + m_used != m_data->m_dirtyEnd)) { ReserveCopy (n); - goto restart; } + uint8_t *buffer = &m_data->m_data[m_used]; + Append16 (item->next, buffer); + buffer += 2; + Append16 (item->prev, buffer); + buffer += 2; + AppendValue (item->typeUid, buffer); + buffer += typeUidSize; + AppendValue (item->size, buffer); + buffer += sizeSize; + Append16 (item->chunkUid, buffer); return n; } diff --git a/src/common/packet-metadata.h b/src/common/packet-metadata.h index 348970513..b638de438 100644 --- a/src/common/packet-metadata.h +++ b/src/common/packet-metadata.h @@ -249,13 +249,13 @@ private: uint32_t available); inline void UpdateHead (uint16_t written); inline void UpdateTail (uint16_t written); - uint32_t GetUleb128Size (uint32_t value) const; + inline uint32_t GetUleb128Size (uint32_t value) const; uint32_t ReadUleb128 (const uint8_t **pBuffer) const; inline void Append16 (uint16_t value, uint8_t *buffer); inline bool TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end); inline bool TryToAppend32 (uint32_t value, uint8_t **pBuffer, uint8_t *end); inline bool TryToAppend16 (uint16_t value, uint8_t **pBuffer, uint8_t *end); - void AppendValue (uint32_t value, uint8_t *buffer); + inline void AppendValue (uint32_t value, uint8_t *buffer); void AppendValueExtra (uint32_t value, uint8_t *buffer); inline void Reserve (uint32_t n); void ReserveCopy (uint32_t n);