X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fvdprintf.c;h=e432454942ee3c7f7e5513c8774f039b9610d046;hb=98716b76d5f78e8ea0670b841ca470dffefb53d9;hp=37512ed7459193b813add00cd1843791c0b887cd;hpb=d464708e0dc6a758523c57a088aea56efb463b1f;p=gnulib.git diff --git a/lib/vdprintf.c b/lib/vdprintf.c index 37512ed74..e43245494 100644 --- a/lib/vdprintf.c +++ b/lib/vdprintf.c @@ -1,5 +1,5 @@ /* Formatted output to a file descriptor. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2012 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 @@ -46,14 +46,17 @@ vdprintf (int fd, const char *format, va_list args) 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;