testcase and fix, symmetric to changeset c861a47407a8
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Sat, 21 Jun 2008 21:20:38 -0700
changeset 3306 3d8da3343514
parent 3305 c861a47407a8
child 3307 c1a29f8ab2af
testcase and fix, symmetric to changeset c861a47407a8
src/common/packet-metadata-test.cc
src/common/packet-metadata.cc
--- a/src/common/packet-metadata-test.cc	Sat Jun 21 21:14:28 2008 -0700
+++ b/src/common/packet-metadata-test.cc	Sat Jun 21 21:20:38 2008 -0700
@@ -767,6 +767,15 @@
   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;
--- a/src/common/packet-metadata.cc	Sat Jun 21 21:14:28 2008 -0700
+++ b/src/common/packet-metadata.cc	Sat Jun 21 21:20:38 2008 -0700
@@ -830,18 +830,13 @@
           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;
         }