diff -r 6456036bbb37 -r edb9f875b7f9 src/printf.c --- a/src/printf.c Wed Apr 03 21:22:23 2024 +0200 +++ b/src/printf.c Fri Apr 12 21:48:12 2024 +0200 @@ -132,7 +132,7 @@ return s; } -int cx_sprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, ... ) { +int cx_sprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, ... ) { va_list ap; va_start(ap, fmt); int ret = cx_vsprintf_a(alloc, str, len, fmt, ap); @@ -140,11 +140,11 @@ return ret; } -int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, va_list ap) { +int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap) { va_list ap2; va_copy(ap2, ap); - int ret = vsnprintf(*str, len, fmt, ap); - if ((unsigned) ret >= len) { + int ret = vsnprintf(*str, *len, fmt, ap); + if ((unsigned) ret >= *len) { unsigned newlen = ret + 1; char *ptr = cxRealloc(alloc, *str, newlen); if (ptr) { @@ -152,6 +152,7 @@ if (newret < 0) { cxFree(alloc, ptr); } else { + *len = newlen; *str = ptr; ret = newret; } @@ -161,7 +162,7 @@ return ret; } -int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, ... ) { +int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ... ) { va_list ap; va_start(ap, fmt); int ret = cx_vsprintf_sa(alloc, buf, len, str, fmt, ap); @@ -169,12 +170,12 @@ return ret; } -int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, va_list ap) { +int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap) { va_list ap2; va_copy(ap2, ap); - int ret = vsnprintf(buf, len, fmt, ap); + int ret = vsnprintf(buf, *len, fmt, ap); *str = buf; - if ((unsigned) ret >= len) { + if ((unsigned) ret >= *len) { unsigned newlen = ret + 1; char *ptr = cxMalloc(alloc, newlen); if (ptr) { @@ -182,6 +183,7 @@ if (newret < 0) { cxFree(alloc, ptr); } else { + *len = newlen; *str = ptr; ret = newret; }