diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index 0454644bb..7d9558f1e 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -231,16 +231,17 @@ static inline bool is_approx(Number value, Number test_value) } template -std::string string_printf(const char *const fmt, Args &&...args) +std::string string_printf(const char *const _fmt, Args &&...args) { static const size_t INITIAL_LEN = 1024; std::vector buffer(INITIAL_LEN, '\0'); - int bufflen = snprintf(buffer.data(), INITIAL_LEN - 1, fmt, std::forward(args)...); + auto fmt = std::string("%s") + _fmt; + int bufflen = snprintf(buffer.data(), INITIAL_LEN - 1, fmt.c_str(), "", std::forward(args)...); if (bufflen >= int(INITIAL_LEN)) { buffer.resize(size_t(bufflen) + 1); - snprintf(buffer.data(), buffer.size(), fmt, std::forward(args)...); + snprintf(buffer.data(), buffer.size(), fmt.c_str(), "", std::forward(args)...); } return std::string(buffer.begin(), buffer.begin() + bufflen);