s/malloc/xmalloc/ s/calloc/xcalloc/ s/realloc/realloc/
[oweals/opkg-lede.git] / libopkg / sprintf_alloc.c
index 30ab033d257dabc8f378125f853f1ed4039da8ca..7989493aa4008425a03ca13c70814a29b66e9847 100644 (file)
 #include <stdarg.h>
 
 #include "sprintf_alloc.h"
 #include <stdarg.h>
 
 #include "sprintf_alloc.h"
+#include "libbb/libbb.h"
 
 int sprintf_alloc(char **str, const char *fmt, ...)
 {
     va_list ap;
 
 int sprintf_alloc(char **str, const char *fmt, ...)
 {
     va_list ap;
-    char *new_str;
     int n, size = 100;
 
     if (!str) {
     int n, size = 100;
 
     if (!str) {
@@ -44,13 +44,11 @@ int sprintf_alloc(char **str, const char *fmt, ...)
 
     /* ripped more or less straight out of PRINTF(3) */
 
 
     /* ripped more or less straight out of PRINTF(3) */
 
-    if ((new_str = calloc(1, size)) == NULL) 
-      return -1;
+    *str = xcalloc(1, size);
 
 
-    *str = new_str;
     while(1) {
       va_start(ap, fmt);
     while(1) {
       va_start(ap, fmt);
-      n = vsnprintf (new_str, size, fmt, ap);
+      n = vsnprintf (*str, size, fmt, ap);
       va_end(ap);
       /* If that worked, return the size. */
       if (n > -1 && n < size)
       va_end(ap);
       /* If that worked, return the size. */
       if (n > -1 && n < size)
@@ -60,13 +58,7 @@ int sprintf_alloc(char **str, const char *fmt, ...)
            size = n+1; /* precisely what is needed */
        else           /* glibc 2.0 */
            size *= 2;  /* twice the old size */
            size = n+1; /* precisely what is needed */
        else           /* glibc 2.0 */
            size *= 2;  /* twice the old size */
-       new_str = realloc(new_str, size);
-       if (new_str == NULL) {
-           free(new_str);
-           *str = NULL;
-           return -1;
-       }
-       *str = new_str;
+       *str = xrealloc(*str, size);
     }
 
     return -1; /* Just to be correct - it probably won't get here */
     }
 
     return -1; /* Just to be correct - it probably won't get here */