diff --git a/src/util/log.c b/src/util/log.c index 6b5b3aeb714..45ecdd8db99 100644 --- a/src/util/log.c +++ b/src/util/log.c @@ -148,7 +148,7 @@ logger_vasnprintf(char *buf, enum mesa_log_level level, const char *tag, const char *format, - va_list va) + va_list in_va) { struct { char *cur; @@ -160,6 +160,9 @@ logger_vasnprintf(char *buf, .rem = size, }; + va_list va; + va_copy(va, in_va); + #define APPEND(state, func, ...) \ do { \ int ret = func(state.cur, state.rem, __VA_ARGS__); \ @@ -195,7 +198,7 @@ logger_vasnprintf(char *buf, void *alloc = malloc(state.total + 1); if (alloc) { buf = logger_vasnprintf(alloc, state.total + 1, affixes, level, tag, - format, va); + format, in_va); assert(buf == alloc); } else { /* pretty-truncate the message */ @@ -203,6 +206,8 @@ logger_vasnprintf(char *buf, } } + va_end(va); + return buf; }