Patch-Source: https://gist.github.com/q66/c780c321caa630a7052035c18bac6655 https://github.com/llvm/llvm-project/issues/62893 -- From f2f90378d4a2c1f744c85d327c67ae8e862fdc7f Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Tue, 23 May 2023 21:09:55 +0200 Subject: [PATCH] disambiguate ScopedString::append On some targets, the definition of va_list may result in a wrong overload of append getting picked up when passing a single string as a variadic argument. --- lib/scudo/standalone/report.cpp | 2 +- lib/scudo/standalone/string_utils.cpp | 6 +++--- lib/scudo/standalone/string_utils.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/report.cpp b/report.cpp index a37faac..9cb70ad 100644 --- a/report.cpp +++ b/report.cpp @@ -21,7 +21,7 @@ public: void append(const char *Format, ...) { va_list Args; va_start(Args, Format); - Message.append(Format, Args); + Message.vappend(Format, Args); va_end(Args); } NORETURN ~ScopedErrorReport() { diff --git a/string_utils.cpp b/string_utils.cpp index 13fdb9c..3d921ba 100644 --- a/string_utils.cpp +++ b/string_utils.cpp @@ -218,7 +218,7 @@ int formatString(char *Buffer, uptr BufferLength, const char *Format, ...) { return Res; } -void ScopedString::append(const char *Format, va_list Args) { +void ScopedString::vappend(const char *Format, va_list Args) { va_list ArgsCopy; va_copy(ArgsCopy, Args); // formatString doesn't currently support a null buffer or zero buffer length, @@ -239,7 +239,7 @@ void ScopedString::append(const char *Format, va_list Args) { void ScopedString::append(const char *Format, ...) { va_list Args; va_start(Args, Format); - append(Format, Args); + vappend(Format, Args); va_end(Args); } @@ -247,7 +247,7 @@ void Printf(const char *Format, ...) { va_list Args; va_start(Args, Format); ScopedString Msg; - Msg.append(Format, Args); + Msg.vappend(Format, Args); outputRaw(Msg.data()); va_end(Args); } diff --git a/string_utils.h b/string_utils.h index 4190119..a4cab52 100644 --- a/string_utils.h +++ b/string_utils.h @@ -25,7 +25,7 @@ public: String.clear(); String.push_back('\0'); } - void append(const char *Format, va_list Args); + void vappend(const char *Format, va_list Args); void append(const char *Format, ...) FORMAT(2, 3); void output() const { outputRaw(String.data()); } void reserve(size_t Size) { String.reserve(Size + 1); }