From: Razvan Becheriu Date: Tue, 2 Jun 2020 20:35:01 +0000 (+0300) Subject: [#1266] Initialize logger internal pointer only once X-Git-Tag: Kea-1.7.9~101 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1be351a742a497f376fa5c79b775d47de572d7f;p=thirdparty%2Fkea.git [#1266] Initialize logger internal pointer only once --- diff --git a/src/lib/log/logger.cc b/src/lib/log/logger.cc index 3ce748db5f..66c0c19c1a 100644 --- a/src/lib/log/logger.cc +++ b/src/lib/log/logger.cc @@ -25,11 +25,12 @@ namespace log { LoggerImpl* Logger::getLoggerPtr() { - if (!loggerptr_) { + if (!initialized_) { lock_guard lk(mutex_); - if (!loggerptr_) { + if (!initialized_) { initLoggerImpl(); } + initialized_ = true; } return (loggerptr_); } diff --git a/src/lib/log/logger.h b/src/lib/log/logger.h index c28f2330b4..08f1f1748a 100644 --- a/src/lib/log/logger.h +++ b/src/lib/log/logger.h @@ -7,6 +7,7 @@ #ifndef LOGGER_H #define LOGGER_H +#include #include #include #include @@ -350,9 +351,17 @@ private: /// \brief Initialize Underlying Implementation and Set loggerptr_ void initLoggerImpl(); - LoggerImpl* loggerptr_; ///< Pointer to underlying logger - char name_[MAX_LOGGER_NAME_SIZE + 1]; ///< Copy of the logger name - std::mutex mutex_; ///< Mutex to protect the internal state + ///< Pointer to underlying logger + LoggerImpl* loggerptr_; + + ///< Copy of the logger name + char name_[MAX_LOGGER_NAME_SIZE + 1]; + + ///< Mutex to protect the internal state + std::mutex mutex_; + + ///< Flag which indicates if logger is initialized + std::atomic initialized_; }; } // namespace log