| 275 | } |
| 276 | |
| 277 | string vmake_stringf(const char* s, va_list args) |
| 278 | { |
| 279 | char buf1[8000]; |
| 280 | va_list orig_args; |
| 281 | va_copy(orig_args, args); |
| 282 | size_t len = vsnprintf(buf1, sizeof buf1, s, orig_args); |
| 283 | va_end(orig_args); |
| 284 | if (len < sizeof buf1) |
| 285 | return buf1; |
| 286 | |
| 287 | char *buf2 = (char*)malloc(len + 1); |
| 288 | va_copy(orig_args, args); |
| 289 | vsnprintf(buf2, len + 1, s, orig_args); |
| 290 | va_end(orig_args); |
| 291 | string ret(buf2); |
| 292 | free(buf2); |
| 293 | |
| 294 | return ret; |
| 295 | } |
| 296 | |
| 297 | string make_stringf(const char *s, ...) |
| 298 | { |
no outgoing calls
no test coverage detected