From 837dcfb8b54687bacb09d919222e6815e13ac711 Mon Sep 17 00:00:00 2001 From: Louis Sugy Date: Fri, 14 Oct 2022 16:47:45 +0200 Subject: [PATCH 1/2] Fix logger (vsnprintf invalidates args) --- cpp/include/raft/core/logger.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cpp/include/raft/core/logger.hpp b/cpp/include/raft/core/logger.hpp index 44c8263abf..6b4a935975 100644 --- a/cpp/include/raft/core/logger.hpp +++ b/cpp/include/raft/core/logger.hpp @@ -78,8 +78,9 @@ namespace detail { */ inline std::string format(const char* fmt, va_list& vl) { - int length = std::vsnprintf(nullptr, 0, fmt, vl); - assert(length >= 0); + va_list vl_copy; + va_copy(vl_copy, vl); + int length = std::vsnprintf(nullptr, 0, fmt, vl_copy); std::vector buf(length + 1); std::vsnprintf(buf.data(), length + 1, fmt, vl); return std::string(buf.data()); From 198129e188aa1497b74cf69106838f130e233852 Mon Sep 17 00:00:00 2001 From: Louis Sugy Date: Fri, 14 Oct 2022 16:51:30 +0200 Subject: [PATCH 2/2] Put back assert --- cpp/include/raft/core/logger.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/cpp/include/raft/core/logger.hpp b/cpp/include/raft/core/logger.hpp index 6b4a935975..3984ec042a 100644 --- a/cpp/include/raft/core/logger.hpp +++ b/cpp/include/raft/core/logger.hpp @@ -81,6 +81,7 @@ inline std::string format(const char* fmt, va_list& vl) va_list vl_copy; va_copy(vl_copy, vl); int length = std::vsnprintf(nullptr, 0, fmt, vl_copy); + assert(length >= 0); std::vector buf(length + 1); std::vsnprintf(buf.data(), length + 1, fmt, vl); return std::string(buf.data());