X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fdprintf.c;h=c57c7d27fb23f4d0d69a1b3e4daf73d57fdb4513;hb=ae0044cde430d5feeba0c9c53a5c0fe1ba636080;hp=91e4a93143ada669ff3820b8d75b6a04fde3e287;hpb=bad6928fe426d5e31de71516a5a48286c6267824;p=gnulib.git diff --git a/lib/dprintf.c b/lib/dprintf.c index 91e4a9314..c57c7d27f 100644 --- a/lib/dprintf.c +++ b/lib/dprintf.c @@ -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;