[haiku-commits] r33908 - haiku/trunk/src/add-ons/kernel/network/protocols/ipv4

  • From: axeld@xxxxxxxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 5 Nov 2009 20:29:24 +0100 (CET)

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;


Other related posts:

  • » [haiku-commits] r33908 - haiku/trunk/src/add-ons/kernel/network/protocols/ipv4 - axeld