diff Core/Logging.cpp @ 4004:9b5ace33a00d

cleaning SetErrorWarnInfoLoggingStreams()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 06 Jun 2020 11:14:10 +0200
parents 3c19371090c3
children 7f9909062d9c
line wrap: on
line diff
--- a/Core/Logging.cpp	Sat Jun 06 11:08:59 2020 +0200
+++ b/Core/Logging.cpp	Sat Jun 06 11:14:10 2020 +0200
@@ -841,24 +841,27 @@
       }
     }
 
-    void SetErrorWarnInfoLoggingStreams(std::ostream* errorStream,
-                                        std::ostream* warningStream,
-                                        std::ostream* infoStream)
+    void SetErrorWarnInfoLoggingStreams(std::ostream& errorStream,
+                                        std::ostream& warningStream,
+                                        std::ostream& infoStream)
     {
-      boost::mutex::scoped_lock lock(loggingMutex_);
       std::unique_ptr<LoggingContext> old;
 
+      {
+        boost::mutex::scoped_lock lock(loggingMutex_);
+
 #if __cplusplus < 201103L
-      old.reset(loggingContext_.release());
+        old.reset(loggingContext_.release());
 #else
-      old = std::move(loggingContext_);
+        old = std::move(loggingContext_);
 #endif
       
-      loggingContext_.reset(new LoggingContext);
-      loggingContext_->error_ = errorStream;
-      loggingContext_->warning_ = warningStream;
-      loggingContext_->info_ = infoStream;
-      lock.unlock();
+        loggingContext_.reset(new LoggingContext);
+        loggingContext_->error_ = &errorStream;
+        loggingContext_->warning_ = &warningStream;
+        loggingContext_->info_ = &infoStream;
+      }
+      
       EnableInfoLevel(old->infoEnabled_);
       EnableTraceLevel(old->traceEnabled_);
     }