From ac20815d5235e7a8e7b331365aabf5a489fc5e34 Mon Sep 17 00:00:00 2001 From: Chase Douglas Date: Tue, 5 Jun 2012 15:39:41 +1000 Subject: [PATCH] Add ErrorFSigSafe() alternative to ErrorF() ErrorF() is not signal safe. Use ErrorSigSafe() whenever an error message may be logged in signal context. [whot: edited to "ErrorFSigSafe"] Signed-off-by: Chase Douglas Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- include/os.h | 6 ++++++ os/log.c | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/os.h b/include/os.h index b3f9088c5..e93c48ae6 100644 --- a/include/os.h +++ b/include/os.h @@ -656,6 +656,12 @@ extern _X_EXPORT void ErrorF(const char *f, ...) _X_ATTRIBUTE_PRINTF(1, 2); extern _X_EXPORT void +VErrorFSigSafe(const char *f, va_list args) +_X_ATTRIBUTE_PRINTF(1, 0); +extern _X_EXPORT void +ErrorFSigSafe(const char *f, ...) +_X_ATTRIBUTE_PRINTF(1, 2); +extern _X_EXPORT void LogPrintMarkers(void); extern _X_EXPORT void diff --git a/os/log.c b/os/log.c index f1a6e3bcd..47ba34876 100644 --- a/os/log.c +++ b/os/log.c @@ -779,6 +779,22 @@ ErrorF(const char *f, ...) va_end(args); } +void +VErrorFSigSafe(const char *f, va_list args) +{ + LogVMessageVerbSigSafe(X_ERROR, -1, f, args); +} + +void +ErrorFSigSafe(const char *f, ...) +{ + va_list args; + + va_start(args, f); + VErrorFSigSafe(f, args); + va_end(args); +} + void LogPrintMarkers(void) {