github.com/afumu/libc@v0.0.6/musl/src/stdio/vasprintf.c (about)

     1  #define _GNU_SOURCE
     2  #include <stdio.h>
     3  #include <stdarg.h>
     4  #include <stdlib.h>
     5  
     6  int vasprintf(char **s, const char *fmt, va_list ap)
     7  {
     8  	va_list ap2;
     9  	va_copy(ap2, ap);
    10  	int l = vsnprintf(0, 0, fmt, ap2);
    11  	va_end(ap2);
    12  
    13  	if (l<0 || !(*s=malloc(l+1U))) return -1;
    14  	return vsnprintf(*s, l+1U, fmt, ap);
    15  }