diff options
author | JackLivio <jack@livio.io> | 2018-08-21 19:07:27 -0400 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2018-08-21 19:07:27 -0400 |
commit | e9302a6d65efdac264808fed96541974696e3f36 (patch) | |
tree | e8be47a623525451c6a1f9401a064f6b96b5ce0c /src | |
parent | d087438d1445dd4596dcedd61c9934b803942b19 (diff) | |
download | sdl_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')
-rw-r--r-- | src/components/utils/include/utils/log_message_loop_thread.h | 10 | ||||
-rw-r--r-- | src/components/utils/src/log_message_loop_thread.cc | 6 |
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 |