diff options
author | Ulrich Sibiller <uli42@gmx.de> | 2019-09-18 23:47:24 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2019-09-29 17:17:06 +0200 |
commit | 506378cf2134c5c4b36f0441100ab806307fd832 (patch) | |
tree | 8d7ea40b0844378b980f9f414f4753334defa303 /nxcompshad/src/Logger.cpp | |
parent | df9d37da58c0f10a7c5aed2af5ccb8a130c7a5b4 (diff) | |
download | nx-libs-506378cf2134c5c4b36f0441100ab806307fd832.tar.gz nx-libs-506378cf2134c5c4b36f0441100ab806307fd832.tar.bz2 nx-libs-506378cf2134c5c4b36f0441100ab806307fd832.zip |
nxcompshad: fix logging segfault
One cannot simply pass down a va_list to another function that expects
variable arguments ("..."). The prototype of the called functions must
expect a va_list argument instead.
This fixes segfaults that happen e.g. after compiling X11.cpp with
TEST and effectively reverts 59e829f3647005a6c93662adfbcea36e27a993d8.
Diffstat (limited to 'nxcompshad/src/Logger.cpp')
-rw-r--r-- | nxcompshad/src/Logger.cpp | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/nxcompshad/src/Logger.cpp b/nxcompshad/src/Logger.cpp index 2f3eab65c..9648509b8 100644 --- a/nxcompshad/src/Logger.cpp +++ b/nxcompshad/src/Logger.cpp @@ -41,14 +41,11 @@ Logger logger; -void Logger::user(const char *format, ...) +void Logger::user(const char *format, va_list arguments) { char string[1024]; - va_list arguments; - va_start(arguments, format); vsnprintf(string, 1024, format, arguments); - va_end(arguments); fprintf(stderr, "%s\n", string); } @@ -59,26 +56,20 @@ void Logger::error(const char *name, int error) name, error, strerror(error)); } -void Logger::warning(const char *name, const char *format, ...) +void Logger::warning(const char *name, const char *format, va_list arguments) { char string[1024]; - va_list arguments; - va_start(arguments, format); vsnprintf(string, 1024, format, arguments); - va_end(arguments); fprintf(stderr, "%s: WARNING! %s\n", name, string); } -void Logger::test(const char *name, const char *format, ...) +void Logger::test(const char *name, const char *format, va_list arguments) { char string[1024]; - va_list arguments; - va_start(arguments, format); vsnprintf(string, 1024, format, arguments); - va_end(arguments); fprintf(stderr, "%s: %s\n", name, string); } @@ -88,14 +79,11 @@ void Logger::trace(const char *name) fprintf(stderr, "%s\n", name); } -void Logger::debug(const char *name, const char *format, ...) +void Logger::debug(const char *name, const char *format, va_list arguments) { char string[1024]; - va_list arguments; - va_start(arguments, format); vsnprintf(string, 1024, format, arguments); - va_end(arguments); fprintf(stderr, "%s: %s\n", name, string); } |