aboutsummaryrefslogtreecommitdiff
path: root/src/crepe/util/fmt.cpp
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-11-05 16:12:47 +0100
committerLoek Le Blansch <loek@pipeframe.xyz>2024-11-05 16:12:47 +0100
commite36ea050972fcaaf3d85d672755bad4ebb2dcd80 (patch)
tree5145e0b66650eea1df301106b7d197a586be65f3 /src/crepe/util/fmt.cpp
parent333b07775be1ef20fdb5909672c1e4dcabec1b40 (diff)
parentb770475741b7c33d57331f3139c55a3f237ad274 (diff)
merge `master` into `loek/savemgr`loek/savemgr
Diffstat (limited to 'src/crepe/util/fmt.cpp')
-rw-r--r--src/crepe/util/fmt.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/crepe/util/fmt.cpp b/src/crepe/util/fmt.cpp
index 8ef1164..4b50da8 100644
--- a/src/crepe/util/fmt.cpp
+++ b/src/crepe/util/fmt.cpp
@@ -6,25 +6,27 @@
using namespace std;
-string crepe::util::va_stringf(va_list args, const char * fmt) {
+string crepe::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);
return out;
}
-string crepe::util::stringf(const char * fmt, ...) {
+string crepe::stringf(const char * fmt, ...) {
va_list args;
va_start(args, fmt);
string out = va_stringf(args, fmt);