mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
download: replace progress_bar_text by std::string
No fixed buffers. Sadly, the thing is still a global variable. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
91968ac579
commit
7452aa22c2
8 changed files with 87 additions and 84 deletions
|
@ -353,20 +353,27 @@ std::string casprintf_loc(const char *cformat, ...)
|
|||
return std::string(utf8.constData(), utf8.size());
|
||||
}
|
||||
|
||||
std::string __printf(1, 2) format_string_std(const char *fmt, ...)
|
||||
std::string format_string_std(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, fmt);
|
||||
size_t stringsize = vsnprintf(NULL, 0, fmt, ap);
|
||||
std::string res = vformat_string_std(fmt, ap);
|
||||
va_end(ap);
|
||||
return res;
|
||||
}
|
||||
|
||||
std::string vformat_string_std(const char *fmt, va_list ap)
|
||||
{
|
||||
va_list ap2;
|
||||
va_copy(ap2, ap);
|
||||
size_t stringsize = vsnprintf(NULL, 0, fmt, ap2);
|
||||
va_end(ap2);
|
||||
if (stringsize == 0)
|
||||
return std::string();
|
||||
std::string res;
|
||||
res.resize(stringsize); // Pointless clearing, oh my.
|
||||
// This overwrites the terminal null-byte of std::string.
|
||||
// That's probably "undefined behavior". Oh my.
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(res.data(), stringsize + 1, fmt, ap);
|
||||
va_end(ap);
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue