]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1266] Initialize logger internal pointer only once
authorRazvan Becheriu <razvan@isc.org>
Tue, 2 Jun 2020 15:57:22 +0000 (18:57 +0300)
committerRazvan Becheriu <razvan@isc.org>
Tue, 2 Jun 2020 15:57:22 +0000 (18:57 +0300)
src/lib/log/logger.cc
src/lib/log/logger.h

index 54dd0756816d563ceca100a7a14a1accc8463fa2..3ce748db5fe0bd999e0363a19c75936e0b095012 100644 (file)
@@ -26,7 +26,10 @@ namespace log {
 LoggerImpl*
 Logger::getLoggerPtr() {
     if (!loggerptr_) {
-        std::call_once(flag_, [&](){ initLoggerImpl(); });
+        lock_guard<mutex> lk(mutex_);
+        if (!loggerptr_) {
+            initLoggerImpl();
+        }
     }
     return (loggerptr_);
 }
index 817a1c172936f70e8c1ee5561e63f14807081941..c28f2330b4fc980d9113e4f1e02b6c45d24ac01b 100644 (file)
@@ -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