From ad6e11f60e55f907af37471423fb869af21b1a0b Mon Sep 17 00:00:00 2001
From: Sam Yates <halfflat@gmail.com>
Date: Tue, 5 Jul 2016 17:47:21 +0200
Subject: [PATCH] Further simplification of debug_emit_trace logic.

---
 src/util/debug.hpp | 23 ++++++++---------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git a/src/util/debug.hpp b/src/util/debug.hpp
index f12f9ec4..1d0ef633 100644
--- a/src/util/debug.hpp
+++ b/src/util/debug.hpp
@@ -1,7 +1,6 @@
 #pragma once
 
 #include <iostream>
-#include <memory>
 #include <sstream>
 #include <mutex>
 
@@ -31,26 +30,20 @@ extern std::mutex global_debug_cerr_mutex;
 
 template <typename... Args>
 void debug_emit_trace(const char* file, int line, const char* varlist, const Args&... args) {
-    constexpr bool multithreaded = nest::mc::threading::multithreaded();
+    if (nest::mc::threading::multithreaded()) {
+        std::stringstream buffer;
 
-    std::unique_ptr<std::ostream> buffer;
-    std::ostream* out = &std::cerr;
+        debug_emit_trace_leader(buffer, file, line, varlist);
+        debug_emit(buffer, args...);
 
-    if (multithreaded) {
-        buffer.reset(new std::stringstream());
-        out = buffer.get();
-    }
-
-    debug_emit_trace_leader(*out, file, line, varlist);
-    debug_emit(*out, args...);
-
-    if (multithreaded) {
         std::lock_guard<std::mutex> guard(global_debug_cerr_mutex);
-        std::cerr << out->rdbuf();
+        std::cerr << buffer.rdbuf();
         std::cerr.flush();
     }
     else {
-        out->flush();
+        debug_emit_trace_leader(std::cerr, file, line, varlist);
+        debug_emit(std::cerr, args...);
+        std::cerr.flush();
     }
 }
 
-- 
GitLab