# HG changeset patch # User Mike Becker # Date 1705445007 -3600 # Node ID aba6d37b78bda41d3644c204b722dc92c2915065 # Parent fda0f1910d7ede2c2270534bf6553b79309e8635 improve program flow - relates to #353 diff -r fda0f1910d7e -r aba6d37b78bd src/printf.c --- a/src/printf.c Tue Jan 16 23:16:15 2024 +0100 +++ b/src/printf.c Tue Jan 16 23:43:27 2024 +0100 @@ -144,27 +144,21 @@ va_list ap2; va_copy(ap2, ap); int ret = vsnprintf(*str, len, fmt, ap); - if (ret < 0 || ((unsigned)ret) < len) { - va_end(ap2); - return ret; - } else { + if ((unsigned) ret >= len) { unsigned newlen = ret + 1; char *ptr = cxRealloc(alloc, *str, newlen); if (ptr) { int newret = vsnprintf(ptr, newlen, fmt, ap2); - va_end(ap2); if (newret < 0) { cxFree(alloc, ptr); - return ret; } else { *str = ptr; - return newret; + ret = newret; } - } else { - va_end(ap2); - return ret; } } + va_end(ap2); + return ret; } int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, ... ) { @@ -180,25 +174,19 @@ va_copy(ap2, ap); int ret = vsnprintf(buf, len, fmt, ap); *str = buf; - if (ret < 0 || ((unsigned)ret) < len) { - va_end(ap2); - return ret; - } else { + if ((unsigned) ret >= len) { unsigned newlen = ret + 1; char *ptr = cxMalloc(alloc, newlen); if (ptr) { int newret = vsnprintf(ptr, newlen, fmt, ap2); - va_end(ap2); if (newret < 0) { cxFree(alloc, ptr); - return ret; } else { *str = ptr; - return newret; + ret = newret; } - } else { - va_end(ap2); - return ret; } } + va_end(ap2); + return ret; }