alloca: one step towards thread-safety
[pspp] / lib / dprintf.c
index 91e4a93143ada669ff3820b8d75b6a04fde3e287..c57c7d27fb23f4d0d69a1b3e4daf73d57fdb4513 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to a file descriptor.
-   Copyright (C) 2009 Free Software Foundation, Inc.
+   Copyright (C) 2009, 2010 Free Software Foundation, Inc.
 
    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
@@ -49,14 +49,17 @@ dprintf (int fd, const char *format, ...)
   if (full_write (fd, output, len) < len)
     {
       if (output != buf)
-       {
-         int saved_errno = errno;
-         free (output);
-         errno = saved_errno;
-       }
+        {
+          int saved_errno = errno;
+          free (output);
+          errno = saved_errno;
+        }
       return -1;
     }
 
+  if (output != buf)
+    free (output);
+
   if (len > INT_MAX)
     {
       errno = EOVERFLOW;