Fix use of references with va_start
BUG=angle:736
va_start behavior is undefined if the second parameter is a
function, array, or reference type. clang produces a warning
for this, while MSVC does not.
Change-Id: I0bc2805e312e3542aac816f10a257e2f1cfad128
Reviewed-on: https://chromium-review.googlesource.com/216010
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Tested-by: Nico Weber <thakis@chromium.org>
diff --git a/src/common/angleutils.cpp b/src/common/angleutils.cpp
index 1da7fca..2673abf 100644
--- a/src/common/angleutils.cpp
+++ b/src/common/angleutils.cpp
@@ -8,26 +8,26 @@
#include <vector>
-std::string FormatString(const std::string &fmt, va_list vararg)
+std::string FormatString(const char *fmt, va_list vararg)
{
static std::vector<char> buffer(512);
// Attempt to just print to the current buffer
- int len = vsnprintf(&buffer[0], buffer.size(), fmt.c_str(), vararg);
+ int len = vsnprintf(&buffer[0], buffer.size(), fmt, vararg);
if (len < 0 || static_cast<size_t>(len) >= buffer.size())
{
// Buffer was not large enough, calculate the required size and resize the buffer
- len = vsnprintf(NULL, 0, fmt.c_str(), vararg);
+ len = vsnprintf(NULL, 0, fmt, vararg);
buffer.resize(len + 1);
// Print again
- vsnprintf(&buffer[0], buffer.size(), fmt.c_str(), vararg);
+ vsnprintf(&buffer[0], buffer.size(), fmt, vararg);
}
return std::string(buffer.data(), len);
}
-std::string FormatString(const std::string &fmt, ...)
+std::string FormatString(const char *fmt, ...)
{
va_list vararg;
va_start(vararg, fmt);