aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRene Gollent <anevilyak@gmail.com>2012-07-14 11:24:22 -0400
committerRene Gollent <anevilyak@gmail.com>2012-07-14 11:24:22 -0400
commitc163f973e6a96a2c37d70cc1992f2bb027f9ab81 (patch)
treee068b8640e7c00a75d4a7acc58ce49c7787961ba
parent2a8e9bb83d29cb06a5846ddc42fa1606d831a597 (diff)
Fix resource leak in error cases. CID 611238.hrev44337
-rw-r--r--src/apps/debugger/value/value_nodes/BMessageValueNode.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp b/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
index 8316d6e8dc..b805a35332 100644
--- a/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
+++ b/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
@@ -281,6 +281,9 @@ BMessageValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
uint8* messageBuffer = new(std::nothrow) uint8[totalSize];
if (messageBuffer == NULL)
return B_NO_MEMORY;
+
+ ArrayDeleter<uint8> deleter(messageBuffer);
+
memset(messageBuffer, 0, totalSize);
memcpy(messageBuffer, fHeader, sizeof(BMessage::message_header));
uint8* tempBuffer = messageBuffer + sizeof(BMessage::message_header);
@@ -313,7 +316,6 @@ BMessageValueNode::ResolvedLocationAndValue(ValueLoader* valueLoader,
}
error = fMessage.Unflatten((const char*)messageBuffer);
- delete[] messageBuffer;
if (error != B_OK)
return error;