From ea4c34fc0bf4f5249c72aa237105c3a2f8b44a98 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 21 Apr 2026 00:25:56 +0300 Subject: [PATCH] LibC: Fix printf thread safety I don't know why I was using a static buffer for value conversions :D --- userspace/libraries/LibC/printf_impl.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/userspace/libraries/LibC/printf_impl.cpp b/userspace/libraries/LibC/printf_impl.cpp index e866313a..ac5f41b0 100644 --- a/userspace/libraries/LibC/printf_impl.cpp +++ b/userspace/libraries/LibC/printf_impl.cpp @@ -274,6 +274,8 @@ static void floating_point_to_maybe_exponent_string(char* buffer, T value, bool extern "C" int printf_impl(const char* format, va_list arguments, int (*putc_fun)(int, void*), void* data) { + char conversion[4096]; + int written = 0; while (*format) { @@ -383,9 +385,6 @@ extern "C" int printf_impl(const char* format, va_list arguments, int (*putc_fun format--; format++; - // FIXME: this should be thread-local to keep - // satisfy multithreaded requirement - static char conversion[4096]; const char* string = nullptr; int length = -1;