aports/main/scudo-malloc/va_args.patch
psykose 86a9aa34d0 main/scudo-malloc: new aport
https://llvm.org
Standalone scudo malloc from compiler-rt
2023-05-23 21:36:58 +02:00

75 lines
2.4 KiB
Diff

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 <daniel@octaforge.org>
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); }