X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=src%2Fcoloredstderr.c;h=064383ea545c90697fbc1f849ba301cc5799c494;hb=733e149c1a48f5fcb5c90579c67af57f9df982ef;hp=c36e7d70d3688a4d5c234dd7b0a33c5d22e0e14c;hpb=f54cd101d750cb31f54081a41d6cb880a9199dba;p=coloredstderr%2Fcoloredstderr.git diff --git a/src/coloredstderr.c b/src/coloredstderr.c index c36e7d7..064383e 100644 --- a/src/coloredstderr.c +++ b/src/coloredstderr.c @@ -30,6 +30,10 @@ # define NDEBUG #endif +#ifndef TLS +# define TLS +#endif + #include #include #include @@ -85,8 +89,8 @@ static int used_fds_set_by_user; * If so don't print the pre/post string for the recursive calls. This is * necessary on some systems (e.g. FreeBSD 9.1) which call multiple hooked * functions while printing a string (e.g. a FILE * and a fd hook function is - * called). */ -static int handle_recursive; + * called). This is not thread-safe if TLS is not available. */ +static TLS int handle_recursive; #include "constants.h" @@ -322,7 +326,7 @@ HOOK_FILE2(int, __overflow, f, _IO_FILE *, f, int, ch) /* Same for FreeBSD's libc. However it's more aggressive: The inline writing * and __swbuf() are also used for normal output (e.g. putc()). Writing to * stderr is still fine; it always calls __swbuf() as stderr is always - * unbufferd. */ + * unbuffered. */ #ifdef HAVE___SWBUF HOOK_FILE2(int, __swbuf, f, int, c, FILE *, f) #endif