X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=lib%2Ffprintf.c;h=28f9c5db6f57792bb6d05e38b3a5694ad986d8e9;hb=bf18c9b4d8ab7f7e8db272594b5d2c8a8dd06b64;hp=2eee2757a6bc57a0c43af5c3fc3d716adaa96369;hpb=685bc46ea352d770e54f02050312df99fd21c9d8;p=gnulib.git
diff --git a/lib/fprintf.c b/lib/fprintf.c
index 2eee2757a..28f9c5db6 100644
--- a/lib/fprintf.c
+++ b/lib/fprintf.c
@@ -1,19 +1,18 @@
/* Formatted output to a stream.
- Copyright (C) 2004, 2006-2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2006-2011 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
+ 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
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation,
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see . */
#ifdef HAVE_CONFIG_H
# include
@@ -30,11 +29,6 @@
#include "fseterr.h"
#include "vasnprintf.h"
-/* Some systems, like OSF/1 4.0 and Woe32, don't have EOVERFLOW. */
-#ifndef EOVERFLOW
-# define EOVERFLOW E2BIG
-#endif
-
/* Print formatted output to the stream FP.
Return string length of formatted string. On error, return a negative
value. */
@@ -61,14 +55,17 @@ fprintf (FILE *fp, const char *format, ...)
if (fwrite (output, 1, len, fp) < 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;