vfprintf: need a va_copy()

pull/274/head
nick black 5 years ago
parent dc2f788d28
commit 3ee48a8233

@ -1263,20 +1263,25 @@ ncplane_vprintf_prep(ncplane* n, const char* format, va_list ap){
if(buf == NULL){
return NULL;
}
va_list vacopy;
va_copy(vacopy, ap);
int ret = vsnprintf(buf, size, format, ap);
if(ret < 0){
free(buf);
va_end(vacopy);
return NULL;
}
if((size_t)ret >= size){
char* tmp = realloc(buf, ret + 1);
if(tmp == NULL){
free(buf);
va_end(vacopy);
return NULL;
}
buf = tmp;
vsprintf(buf, format, ap);
vsprintf(buf, format, vacopy);
}
va_end(vacopy);
return buf;
}

Loading…
Cancel
Save