From c2f0565b6d5054f02e71026a186e1a8b244f15e5 Mon Sep 17 00:00:00 2001 From: Pagani Walter Date: Sun, 17 Mar 2024 12:37:18 -0300 Subject: [PATCH] rewrite getf method --- src/ASCommon/AzthLanguage.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/ASCommon/AzthLanguage.cpp b/src/ASCommon/AzthLanguage.cpp index f72d693..837a993 100644 --- a/src/ASCommon/AzthLanguage.cpp +++ b/src/ASCommon/AzthLanguage.cpp @@ -63,16 +63,21 @@ const char * AzthLang::get(uint32 strId, Player const* pl) const return "Unknown Azth string"; } -const char * AzthLang::getf(uint32 strId, Player const* pl, ...) const +const char* AzthLang::getf(uint32 strId, Player const* pl, ...) const { - const char *format = get(strId, pl); + const char* format = get(strId, pl); va_list ap; - char str [2048]; va_start(ap, pl); - vsnprintf(str, 2048, format, ap); - va_end(ap); - const char *ret=&str[0]; + va_list ap_copy; + va_copy(ap_copy, ap); + int len = vsnprintf(nullptr, 0, format, ap_copy); + va_end(ap_copy); + + std::string result; + result.resize(len + 1); + vsnprintf(&result[0], len + 1, format, ap); + va_end(ap); - return ret; + return result.c_str(); }