Author: andreasf Date: 2010-09-01 20:19:57 +0200 (Wed, 01 Sep 2010) New Revision: 38503 Changeset: http://dev.haiku-os.org/changeset/38503 Modified: haiku/trunk/src/system/boot/loader/net/TCP.cpp Log: boot_net: Fix TCP memory leaks In some error conditions the packet would have been leaked. Modified: haiku/trunk/src/system/boot/loader/net/TCP.cpp =================================================================== --- haiku/trunk/src/system/boot/loader/net/TCP.cpp 2010-09-01 17:57:18 UTC (rev 38502) +++ haiku/trunk/src/system/boot/loader/net/TCP.cpp 2010-09-01 18:19:57 UTC (rev 38503) @@ -218,8 +218,10 @@ return B_NO_MEMORY; error = packet->SetTo(NULL, 0, fAddress, fPort, address, port, fSequenceNumber, fAcknowledgeNumber, TCP_SYN); - if (error != B_OK) + if (error != B_OK) { + delete packet; return error; + } error = _Send(packet); if (error != B_OK) return error; @@ -248,8 +250,10 @@ return B_NO_MEMORY; status_t error = packet->SetTo(NULL, 0, fAddress, fPort, fRemoteAddress, fRemotePort, fSequenceNumber, fAcknowledgeNumber, TCP_FIN | TCP_ACK); - if (error != B_OK) + if (error != B_OK) { + delete packet; return error; + } error = _Send(packet); if (error != B_OK) return error; @@ -354,8 +358,10 @@ status_t error = packet->SetTo(buffer, bufferSize, fAddress, fPort, fRemoteAddress, fRemotePort, fSequenceNumber, fAcknowledgeNumber, TCP_ACK); - if (error != B_OK) + if (error != B_OK) { + delete packet; return error; + } return _Send(packet); } @@ -589,9 +595,12 @@ return B_NO_MEMORY; status_t error = packet->SetTo(NULL, 0, fAddress, fPort, fRemoteAddress, fRemotePort, fSequenceNumber, fAcknowledgeNumber, TCP_ACK); - if (error != B_OK) + if (error != B_OK) { + delete packet; return error; + } error = _Send(packet, false); + delete packet; if (error != B_OK) return error; return B_OK;