src/printf.c

changeset 849
edb9f875b7f9
parent 813
aba6d37b78bd
     1.1 --- a/src/printf.c	Wed Apr 03 21:22:23 2024 +0200
     1.2 +++ b/src/printf.c	Fri Apr 12 21:48:12 2024 +0200
     1.3 @@ -132,7 +132,7 @@
     1.4      return s;
     1.5  }
     1.6  
     1.7 -int cx_sprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, ... ) {
     1.8 +int cx_sprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, ... ) {
     1.9      va_list ap;
    1.10      va_start(ap, fmt);
    1.11      int ret = cx_vsprintf_a(alloc, str, len, fmt, ap);
    1.12 @@ -140,11 +140,11 @@
    1.13      return ret;
    1.14  }
    1.15  
    1.16 -int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t len, const char *fmt, va_list ap) {
    1.17 +int cx_vsprintf_a(CxAllocator *alloc, char **str, size_t *len, const char *fmt, va_list ap) {
    1.18      va_list ap2;
    1.19      va_copy(ap2, ap);
    1.20 -    int ret = vsnprintf(*str, len, fmt, ap);
    1.21 -    if ((unsigned) ret >= len) {
    1.22 +    int ret = vsnprintf(*str, *len, fmt, ap);
    1.23 +    if ((unsigned) ret >= *len) {
    1.24          unsigned newlen = ret + 1;
    1.25          char *ptr = cxRealloc(alloc, *str, newlen);
    1.26          if (ptr) {
    1.27 @@ -152,6 +152,7 @@
    1.28              if (newret < 0) {
    1.29                  cxFree(alloc, ptr);
    1.30              } else {
    1.31 +                *len = newlen;
    1.32                  *str = ptr;
    1.33                  ret = newret;
    1.34              }
    1.35 @@ -161,7 +162,7 @@
    1.36      return ret;
    1.37  }
    1.38  
    1.39 -int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, ... ) {
    1.40 +int cx_sprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, ... ) {
    1.41      va_list ap;
    1.42      va_start(ap, fmt);
    1.43      int ret = cx_vsprintf_sa(alloc, buf, len, str, fmt, ap);
    1.44 @@ -169,12 +170,12 @@
    1.45      return ret;
    1.46  }
    1.47  
    1.48 -int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t len, char **str, const char *fmt, va_list ap) {
    1.49 +int cx_vsprintf_sa(CxAllocator *alloc, char *buf, size_t *len, char **str, const char *fmt, va_list ap) {
    1.50      va_list ap2;
    1.51      va_copy(ap2, ap);
    1.52 -    int ret = vsnprintf(buf, len, fmt, ap);
    1.53 +    int ret = vsnprintf(buf, *len, fmt, ap);
    1.54      *str = buf;
    1.55 -    if ((unsigned) ret >= len) {
    1.56 +    if ((unsigned) ret >= *len) {
    1.57          unsigned newlen = ret + 1;
    1.58          char *ptr = cxMalloc(alloc, newlen);
    1.59          if (ptr) {
    1.60 @@ -182,6 +183,7 @@
    1.61              if (newret < 0) {
    1.62                  cxFree(alloc, ptr);
    1.63              } else {
    1.64 +                *len = newlen;
    1.65                  *str = ptr;
    1.66                  ret = newret;
    1.67              }

mercurial