From 90deb9fb438bf353af0a16c595533ff3ff17752e Mon Sep 17 00:00:00 2001 From: Bananymous Date: Fri, 9 Jan 2026 20:30:35 +0200 Subject: [PATCH] BAN: Make debug output thread safe Now file lock is only acquired once per message, not once per character --- BAN/include/BAN/Debug.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/BAN/include/BAN/Debug.h b/BAN/include/BAN/Debug.h index 2c9e656c..bb5c9250 100644 --- a/BAN/include/BAN/Debug.h +++ b/BAN/include/BAN/Debug.h @@ -9,29 +9,35 @@ #include #include -#define __debug_putchar [](int c) { putc(c, stddbg); } +#define __debug_putchar [](int c) { putc_unlocked(c, stddbg); } #define dprintln(...) \ do { \ + flockfile(stddbg); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar,"\n"); \ fflush(stddbg); \ + funlockfile(stddbg); \ } while (false) #define dwarnln(...) \ do { \ + flockfile(stddbg); \ BAN::Formatter::print(__debug_putchar, "\e[33m"); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar, "\e[m\n"); \ fflush(stddbg); \ + funlockfile(stddbg); \ } while(false) #define derrorln(...) \ do { \ + flockfile(stddbg); \ BAN::Formatter::print(__debug_putchar, "\e[31m"); \ BAN::Formatter::print(__debug_putchar, __VA_ARGS__); \ BAN::Formatter::print(__debug_putchar, "\e[m\n"); \ fflush(stddbg); \ + funlockfile(stddbg); \ } while(false) #define dprintln_if(cond, ...) \