summaryrefslogtreecommitdiffstats
path: root/runtime/base
diff options
context:
space:
mode:
authorSebastien Hertz <shertz@google.com>2013-08-05 16:17:42 +0200
committerSebastien Hertz <shertz@google.com>2013-08-06 09:57:19 +0200
commit916041f1ea33f5cb9de869d28dcdfaa390095c32 (patch)
tree5e5a57627c634bfc9b79d06fbf9d67c29afa23ee /runtime/base
parent01079b5a0f61a62fa15abf66dabdc92a4ed7b5af (diff)
downloadart-916041f1ea33f5cb9de869d28dcdfaa390095c32.zip
art-916041f1ea33f5cb9de869d28dcdfaa390095c32.tar.gz
art-916041f1ea33f5cb9de869d28dcdfaa390095c32.tar.bz2
Fix logging memory leak.
Use a UniquePtr to ensure the LogMessage::data_ member is deleted. Change-Id: Ifbf5e38307c72908579a7adbe1660f99da0e558e
Diffstat (limited to 'runtime/base')
-rw-r--r--runtime/base/logging.cc2
-rw-r--r--runtime/base/logging.h3
2 files changed, 2 insertions, 3 deletions
diff --git a/runtime/base/logging.cc b/runtime/base/logging.cc
index 83ecca8..7d54baf 100644
--- a/runtime/base/logging.cc
+++ b/runtime/base/logging.cc
@@ -156,8 +156,6 @@ LogMessage::~LogMessage() {
if (data_->severity == FATAL) {
Runtime::Abort();
}
-
- delete data_;
}
HexDump::HexDump(const void* address, size_t byte_count, bool show_actual_addresses)
diff --git a/runtime/base/logging.h b/runtime/base/logging.h
index d641ae4..eafa050 100644
--- a/runtime/base/logging.h
+++ b/runtime/base/logging.h
@@ -24,6 +24,7 @@
#include <signal.h>
#include "base/macros.h"
#include "log_severity.h"
+#include "UniquePtr.h"
#define CHECK(x) \
if (UNLIKELY(!(x))) \
@@ -194,7 +195,7 @@ class LogMessage {
private:
static void LogLine(const LogMessageData& data, const char*);
- LogMessageData* const data_;
+ const UniquePtr<LogMessageData> data_;
friend void HandleUnexpectedSignal(int signal_number, siginfo_t* info, void* raw_context);
friend class Mutex;