aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormax-001 <maxsmits21@kpnmail.nl>2024-11-05 14:20:24 +0100
committermax-001 <maxsmits21@kpnmail.nl>2024-11-05 14:20:24 +0100
commitdd24187ba7bcd534a54b723735168f45e9612051 (patch)
treed973cece37b9b1eb96b78d77516e661e8d318fe6
parent4460bd204d32f4f3dd00661b1b3e42c89588233f (diff)
parent777556306a5ab23d97d955701c93ae764673ddfe (diff)
Merge remote-tracking branch 'origin/master' into max/gameobject
-rw-r--r--src/crepe/util/fmt.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/crepe/util/fmt.cpp b/src/crepe/util/fmt.cpp
index 8ef1164..397bf9f 100644
--- a/src/crepe/util/fmt.cpp
+++ b/src/crepe/util/fmt.cpp
@@ -7,17 +7,19 @@
using namespace std;
string crepe::util::va_stringf(va_list args, const char * fmt) {
+ string out;
+
va_list args_copy;
va_copy(args_copy, args);
-
- size_t sz = vsnprintf(NULL, 0, fmt, args_copy) + 1;
- char * msg = (char *) malloc(sz);
+ size_t length = vsnprintf(NULL, 0, fmt, args_copy);
+ // resize to include terminating null byte
+ out.resize(length + 1);
va_end(args_copy);
- vsnprintf(msg, sz, fmt, args);
-
- string out = msg;
- free(msg);
+ // vsnprintf adds terminating null byte
+ vsnprintf(out.data(), out.size(), fmt, args);
+ // resize to actual length
+ out.resize(length);
va_end(args);