va_list arg;
va_start(arg, format);
- size = vsnprintf(NULL, 0, format, arg) + 1;
+ size = vsnprintf(NULL, 0, format, arg);
va_end(arg);
+ if (size < 0)
+ return -1;
+ size++;
*buffer = malloc(size);
- if (buffer == NULL)
- printf("Cannot allocate memory");
+ if (*buffer == NULL)
+ return -1;
va_start(arg, format);
ret = vsnprintf(*buffer, size, format, arg);