summaryrefslogtreecommitdiff
path: root/src/components/utils
diff options
context:
space:
mode:
authorJackLivio <jack@livio.io>2018-08-21 19:07:27 -0400
committerJackLivio <jack@livio.io>2018-08-21 19:07:27 -0400
commite9302a6d65efdac264808fed96541974696e3f36 (patch)
treee8be47a623525451c6a1f9401a064f6b96b5ce0c /src/components/utils
parentd087438d1445dd4596dcedd61c9934b803942b19 (diff)
downloadsdl_core-e9302a6d65efdac264808fed96541974696e3f36.tar.gz
Make LogMessageLoopThread a handler
Before when the LogMessageLoopThread desctructor was called, it would delete the handler before deleting the message loop thread. This would cause a segfault in MessageLoopThread::DrainQueue() when trying to access the null handler_ pointer.
Diffstat (limited to 'src/components/utils')
-rw-r--r--src/components/utils/include/utils/log_message_loop_thread.h10
-rw-r--r--src/components/utils/src/log_message_loop_thread.cc6
2 files changed, 5 insertions, 11 deletions
diff --git a/src/components/utils/include/utils/log_message_loop_thread.h b/src/components/utils/include/utils/log_message_loop_thread.h
index d6a9edd072..b20b43c251 100644
--- a/src/components/utils/include/utils/log_message_loop_thread.h
+++ b/src/components/utils/include/utils/log_message_loop_thread.h
@@ -56,18 +56,14 @@ typedef std::queue<LogMessage> LogMessageQueue;
typedef threads::MessageLoopThread<LogMessageQueue>
LogMessageLoopThreadTemplate;
-class LogMessageHandler : public LogMessageLoopThreadTemplate::Handler {
- public:
- virtual void Handle(const LogMessage message) OVERRIDE;
-};
-
-class LogMessageLoopThread : public LogMessageLoopThreadTemplate {
+class LogMessageLoopThread : public LogMessageLoopThreadTemplate,
+ public LogMessageLoopThreadTemplate::Handler {
public:
LogMessageLoopThread();
~LogMessageLoopThread();
+ void Handle(const LogMessage message) OVERRIDE;
private:
- LogMessageHandler* handler_;
DISALLOW_COPY_AND_ASSIGN(LogMessageLoopThread);
};
diff --git a/src/components/utils/src/log_message_loop_thread.cc b/src/components/utils/src/log_message_loop_thread.cc
index 2b7f28fbfd..25cf5ab7bb 100644
--- a/src/components/utils/src/log_message_loop_thread.cc
+++ b/src/components/utils/src/log_message_loop_thread.cc
@@ -35,7 +35,7 @@
namespace logger {
-void LogMessageHandler::Handle(const LogMessage message) {
+void LogMessageLoopThread::Handle(const LogMessage message) {
message.logger->forcedLog(message.level,
message.entry,
message.timeStamp,
@@ -44,14 +44,12 @@ void LogMessageHandler::Handle(const LogMessage message) {
}
LogMessageLoopThread::LogMessageLoopThread()
- : LogMessageLoopThreadTemplate("Logger",
- handler_ = new LogMessageHandler()) {}
+ : LogMessageLoopThreadTemplate("Logger", this) {}
LogMessageLoopThread::~LogMessageLoopThread() {
// we'll have to drop messages
// while deleting logger thread
logger_status = DeletingLoggerThread;
- delete handler_;
}
} // namespace logger