chiark / gitweb /
Some configuration-related memory hygeine.
[disorder] / lib / asprintf.c
index da37319012c19f5f6a85a9c8f0f7a5577f280d48..ddfc12ece96cae4e269cb339a9df9a74e58f84c6 100644 (file)
 int byte_vasprintf(char **ptrp,
                   const char *fmt,
                   va_list ap) {
+  struct sink *s;
   struct dynstr d;
   int n;
 
   dynstr_init(&d);
-  if((n = byte_vsinkprintf(sink_dynstr(&d), fmt, ap)) >= 0) {
+  s = sink_dynstr(&d);
+  n = byte_vsinkprintf(s, fmt, ap);
+  xfree(s);
+  if(n >= 0) {
     dynstr_terminate(&d);
     *ptrp = d.vec;
   }