testcase and fix, symmetric to changeset c861a47407a8

This commit is contained in:
Mathieu Lacage
2008-06-21 21:20:38 -07:00
parent 14c3cac1d1
commit 2fb03d7aa3
2 changed files with 11 additions and 7 deletions

View File

@@ -767,6 +767,15 @@ PacketMetadataTest::RunTests (void)
CHECK_HISTORY (p, 1, 500);
p->RemoveAtEnd (10);
CHECK_HISTORY (p, 1, 490);
p = Create<Packet> (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;

View File

@@ -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;
}