From: Andreas Monzner Date: Wed, 8 Nov 2006 19:56:51 +0000 (+0000) Subject: make logOutput thread safe X-Git-Tag: 2.6.0~2747 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/9bef763b47b5e5a273ce6eed4583004690571fcf make logOutput thread safe --- diff --git a/lib/base/eerror.cpp b/lib/base/eerror.cpp index 3fc38ade..a8411879 100644 --- a/lib/base/eerror.cpp +++ b/lib/base/eerror.cpp @@ -76,6 +76,9 @@ int infatal=0; Signal2 logOutput; int logOutputConsole=1; +pthread_mutex_t signalLock = + PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP; + void eFatal(const char* fmt, ...) { char buf[1024]; @@ -83,6 +86,7 @@ void eFatal(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlFatal, buf); fprintf(stderr, "FATAL: %s\n",buf ); #if 0 @@ -94,7 +98,6 @@ void eFatal(const char* fmt, ...) msg.exec(); } #endif - _exit(0); } @@ -106,6 +109,7 @@ void eDebug(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlDebug, std::string(buf) + "\n"); if (logOutputConsole) fprintf(stderr, "%s\n", buf); @@ -118,6 +122,7 @@ void eDebugNoNewLine(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlDebug, buf); if (logOutputConsole) fprintf(stderr, "%s", buf); @@ -130,6 +135,7 @@ void eWarning(const char* fmt, ...) va_start(ap, fmt); vsnprintf(buf, 1024, fmt, ap); va_end(ap); + singleLock s(signalLock); logOutput(lvlWarning, std::string(buf) + "\n"); if (logOutputConsole) fprintf(stderr, "%s\n", buf);