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