Note: Perf is not important
| 14 | |
| 15 | // Note: Perf is not important |
| 16 | static void vssappendf(std::string &dest, const char *format, va_list args) |
| 17 | { |
| 18 | char first_try[128]; // this function is called 99% (100%?) of the times for small string |
| 19 | va_list args_copy; |
| 20 | va_copy(args_copy, args); |
| 21 | |
| 22 | s32 size = std::vsnprintf(first_try, 128, format, args_copy) + 1; |
| 23 | |
| 24 | va_end(args_copy); |
| 25 | |
| 26 | if (size < 0) |
| 27 | return; |
| 28 | if (size < 128) { |
| 29 | dest += first_try; |
| 30 | return; |
| 31 | } |
| 32 | |
| 33 | std::vector<char> output(size + 1); |
| 34 | std::vsnprintf(output.data(), size, format, args); |
| 35 | |
| 36 | dest += output.data(); |
| 37 | } |
| 38 | |
| 39 | void ssappendf(std::string &dest, const char *format, ...) |
| 40 | { |