From: Razvan Becheriu Date: Tue, 2 Jun 2020 15:57:22 +0000 (+0300) Subject: [#1266] Initialize logger internal pointer only once X-Git-Tag: Kea-1.7.9~102 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6007ec3b71f8b6200a249133a3aa70bad7d838ba;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 54dd075681..3ce748db5f 100644 --- a/src/lib/log/logger.cc +++ b/src/lib/log/logger.cc @@ -26,7 +26,10 @@ namespace log { LoggerImpl* Logger::getLoggerPtr() { if (!loggerptr_) { - std::call_once(flag_, [&](){ initLoggerImpl(); }); + lock_guard lk(mutex_); + if (!loggerptr_) { + initLoggerImpl(); + } } return (loggerptr_); } diff --git a/src/lib/log/logger.h b/src/lib/log/logger.h index 817a1c1729..c28f2330b4 100644 --- a/src/lib/log/logger.h +++ b/src/lib/log/logger.h @@ -352,7 +352,7 @@ private: LoggerImpl* loggerptr_; ///< Pointer to underlying logger char name_[MAX_LOGGER_NAME_SIZE + 1]; ///< Copy of the logger name - std::once_flag flag_; ///< Flag to initialize only once + std::mutex mutex_; ///< Mutex to protect the internal state }; } // namespace log