From 48edf993733b861b0c4c6398eb213193fdcab174 Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Tue, 3 Sep 2013 16:30:43 +0200 Subject: [PATCH] Thread-secure error(3). --- libc/error/gnu_error.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libc/error/gnu_error.cpp b/libc/error/gnu_error.cpp index ba5e4cac..bcda2d9a 100644 --- a/libc/error/gnu_error.cpp +++ b/libc/error/gnu_error.cpp @@ -31,16 +31,21 @@ extern "C" void gnu_error(int status, int errnum, const char *format, ...) { - fprintf(stderr, "%s: ", program_invocation_name); + flockfile(stderr); + + fprintf_unlocked(stderr, "%s: ", program_invocation_name); va_list list; va_start(list, format); - vfprintf(stderr, format, list); + vfprintf_unlocked(stderr, format, list); va_end(list); if ( errnum ) - fprintf(stderr, ": %s", strerror(errnum)); - fprintf(stderr, "\n"); + fprintf_unlocked(stderr, ": %s", strerror(errnum)); + fprintf_unlocked(stderr, "\n"); + + funlockfile(stderr); + if ( status ) exit(status); }