From 90a4776f05cec29f816299d289c5f9cf0c523a69 Mon Sep 17 00:00:00 2001 From: Matthew Hatch Date: Wed, 8 May 2019 16:42:51 -0700 Subject: Fixed segmentation fault in do_warn Copied va_list to avoid reuse causing crash --- src/message.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/message.cpp b/src/message.cpp index 2e3e41a..ddf757a 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -167,6 +167,10 @@ static void format_warn(const char *file,int line,const char *text) static void do_warn(bool enabled, const char *file, int line, const char *prefix, const char *fmt, va_list args) { if (!enabled) return; // warning type disabled + + va_list argsCopy; + va_copy(argsCopy, args); + int l=0; if (prefix) { @@ -182,7 +186,7 @@ static void do_warn(bool enabled, const char *file, int line, const char *prefix { qstrncpy(text,prefix,bufSize); } - vsnprintf(text+l, bufSize-l, fmt, args); + vsnprintf(text+l, bufSize-l, fmt, argsCopy); text[bufSize-1]='\0'; format_warn(file,line,text); free(text); -- cgit v0.12