From 6cf91f9542e7ac2cd3feb33ca4ae776413e2c509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Mon, 4 Dec 2006 16:15:21 +0000 Subject: [PATCH] Before freeing "next", it should have been removed already... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19422 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/protocols/tcp/BufferQueue.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/network/protocols/tcp/BufferQueue.cpp b/src/add-ons/kernel/network/protocols/tcp/BufferQueue.cpp index 89e30ead2f..515dcaabda 100644 --- a/src/add-ons/kernel/network/protocols/tcp/BufferQueue.cpp +++ b/src/add-ons/kernel/network/protocols/tcp/BufferQueue.cpp @@ -132,8 +132,11 @@ BufferQueue::Add(net_buffer *buffer, tcp_sequence sequence) && tcp_sequence(sequence + buffer->size) > next->sequence) { // we already have at least part of this data if (tcp_sequence(next->sequence + next->size) < sequence + buffer->size) { - gBufferModule->free(next); + net_buffer *remove = next; next = (net_buffer *)next->link.next; + + fList.Remove(remove); + gBufferModule->free(remove); } else gBufferModule->remove_trailer(buffer, next->sequence - (sequence + buffer->size)); }