Author: axeld Date: 2009-11-05 20:29:24 +0100 (Thu, 05 Nov 2009) New Revision: 33908 Changeset: http://dev.haiku-os.org/changeset/33908/haiku Modified: haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp Log: * "next" & "previous" could be NULL, but were still referenced - based on Oliver's patch for bug #4896 which this one fixes. Modified: haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp =================================================================== --- haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp 2009-11-05 18:15:21 UTC (rev 33907) +++ haiku/trunk/src/add-ons/kernel/network/protocols/ipv4/ipv4.cpp 2009-11-05 19:29:24 UTC (rev 33908) @@ -338,11 +338,19 @@ status_t status = gBufferModule->merge(buffer, next, true); TRACE(" merge next: %s", strerror(status)); if (status != B_OK) { - fFragments.Insert((net_buffer*)previous->link.next, next); + // Insert "next" at its previous position + if (previous != NULL) + fFragments.Insert((net_buffer*)previous->link.next, next); + else + fFragments.Insert(next); + return status; } - fFragments.Insert((net_buffer*)previous->link.next, buffer); + if (previous != NULL) + fFragments.Insert((net_buffer*)previous->link.next, buffer); + else + fFragments.Insert(buffer); // cut down existing hole fBytesLeft -= end - start;