diff -r 4c4c445efebe -r e12cbd513b47 src/common/packet.cc --- a/src/common/packet.cc Tue Jun 02 16:38:24 2009 +0200 +++ b/src/common/packet.cc Tue Jun 02 19:40:05 2009 +0200 @@ -294,7 +294,13 @@ Packet::PeekData (void) const { NS_LOG_FUNCTION (this); - return m_buffer.PeekData (); + uint32_t oldStart = m_buffer.GetCurrentStartOffset (); + uint8_t const * data = m_buffer.PeekData (); + uint32_t newStart = m_buffer.GetCurrentStartOffset (); + + // Update tag offsets if buffer offsets were changed + const_cast(m_tagList).AddAtStart (newStart - oldStart, newStart); + return data; } uint32_t @@ -952,6 +958,18 @@ CHECK (tmp, 1, E (10, 0, 10)); } + { + // bug 572 + Ptr tmp = Create (1000); + tmp->AddTag (ATestTag<20> ()); + CHECK (tmp, 1, E (20, 0, 1000)); + tmp->AddHeader (ATestHeader<2> ()); + CHECK (tmp, 1, E (20, 2, 1002)); + tmp->RemoveAtStart (1); + CHECK (tmp, 1, E (20, 1, 1001)); + tmp->PeekData (); + CHECK (tmp, 1, E (20, 1, 1001)); + } return result; }