From 61de73e29c36ace1accce6304eec291dd8b42d52 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sun, 25 May 2008 23:41:22 +0000 Subject: [PATCH] Memory leak in error cases. CID 729. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25659 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/port.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/system/kernel/port.cpp b/src/system/kernel/port.cpp index 90a7b6e1ab..4db0f2eae4 100644 --- a/src/system/kernel/port.cpp +++ b/src/system/kernel/port.cpp @@ -1153,8 +1153,10 @@ writev_port_etc(port_id id, int32 msgCode, const iovec *msgVecs, bytes = bufferSize; if ((status = cbuf_user_memcpy_to_chain(msg->buffer_chain, - 0, msgVecs[i].iov_base, bytes)) < B_OK) + 0, msgVecs[i].iov_base, bytes)) < B_OK) { + put_port_msg(msg); return status; + } bufferSize -= bytes; if (bufferSize == 0) @@ -1168,8 +1170,10 @@ writev_port_etc(port_id id, int32 msgCode, const iovec *msgVecs, bytes = bufferSize; if ((status = cbuf_memcpy_to_chain(msg->buffer_chain, - 0, msgVecs[i].iov_base, bytes)) < 0) + 0, msgVecs[i].iov_base, bytes)) < 0) { + put_port_msg(msg); return status; + } bufferSize -= bytes; if (bufferSize == 0)