chiark / gitweb /
protogen: disorder_new_tracks().
[disorder] / lib / asprintf.c
index 54003395dc85b9a9cc61cf94ca36446db965435d..fd9fa6cbdce2dde0faadc6e6c1ed48e07469f547 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * This file is part of DisOrder
- * Copyright (C) 2004-2008 Richard Kettlewell
+ * Copyright (C) 2004-2009 Richard Kettlewell
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 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;
   }
@@ -99,7 +103,7 @@ int byte_xvasprintf(char **ptrp,
   int n;
 
   if((n = byte_vasprintf(ptrp, fmt, ap)) < 0)
-    fatal(errno, "error calling byte_vasprintf");
+    disorder_fatal(errno, "error calling byte_vasprintf");
   return n;
 }