From 2fb03d7aa3b58329550fc00c8a4bc30f945c91d9 Mon Sep 17 00:00:00 2001 From: Mathieu Lacage Date: Sat, 21 Jun 2008 21:20:38 -0700 Subject: [PATCH] testcase and fix, symmetric to changeset c861a47407a8 --- src/common/packet-metadata-test.cc | 9 +++++++++ src/common/packet-metadata.cc | 9 ++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/common/packet-metadata-test.cc b/src/common/packet-metadata-test.cc index ee217757a..f8300c697 100644 --- a/src/common/packet-metadata-test.cc +++ b/src/common/packet-metadata-test.cc @@ -767,6 +767,15 @@ PacketMetadataTest::RunTests (void) CHECK_HISTORY (p, 1, 500); p->RemoveAtEnd (10); CHECK_HISTORY (p, 1, 490); + + p = Create (500); + CHECK_HISTORY (p, 1, 500); + ADD_TRAILER (p, 10); + CHECK_HISTORY (p, 2, 500, 10); + REM_TRAILER (p, 10); + CHECK_HISTORY (p, 1, 500); + p->RemoveAtStart (10); + CHECK_HISTORY (p, 1, 490); return result; diff --git a/src/common/packet-metadata.cc b/src/common/packet-metadata.cc index 1794d3447..85f86b826 100644 --- a/src/common/packet-metadata.cc +++ b/src/common/packet-metadata.cc @@ -830,18 +830,13 @@ PacketMetadata::RemoveAtStart (uint32_t start) uint16_t written = fragment.AddBig (0xffff, fragment.m_tail, &item, &extraItem); fragment.UpdateTail (written); - current = item.next; - while (current != 0xffff) + while (current != 0xffff && current != m_tail) { + current = item.next; ReadItems (current, &item, &extraItem); written = fragment.AddBig (0xffff, fragment.m_tail, &item, &extraItem); fragment.UpdateTail (written); - if (current == m_tail) - { - break; - } - current = item.next; } *this = fragment; }