]> Savannah Git Hosting - gnulib.git/commitdiff
fwrite: silence __wur only for older glibc versions
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 3 Jan 2013 18:11:25 +0000 (10:11 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 3 Jan 2013 18:11:40 +0000 (10:11 -0800)
* lib/stdio.in.h (fwrite): Limit workaround to glibc 2.4 through 2.15.
This will help us remove this workaround some time in the far future.

ChangeLog
lib/stdio.in.h

index 0bae9906ebc0254c877b870638895457531666c2..714ee4c287d8614559b1f452be978f22d97ace1f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-01-03  Paul Eggert  <eggert@cs.ucla.edu>
+
+       fwrite: silence __wur only for older glibc versions
+       * lib/stdio.in.h (fwrite): Limit workaround to glibc 2.4 through 2.15.
+       This will help us remove this workaround some time in the far future.
+
 2013-01-03  Eric Blake  <eblake@redhat.com>
 
        fwrite: silence __wur without using inline
index f9765d100d713ea4117a4b2879d681044519af55..c345499a5381016a53502eaaf0b813a26002f23a 100644 (file)
@@ -575,13 +575,15 @@ _GL_CXXALIAS_RPL (fwrite, size_t,
 _GL_CXXALIAS_SYS (fwrite, size_t,
                   (const void *ptr, size_t s, size_t n, FILE *stream));
 
-/* Work around glibc bug 11959
+/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
    <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
    which sometimes causes an unwanted diagnostic for fwrite calls.
    This affects only function declaration attributes under certain
    versions of gcc, and is not needed for C++.  */
-#  if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL \
-  && 3 < (__GNUC__ + (4 <= __GNUC_MINOR__))
+#  if (0 < __USE_FORTIFY_LEVEL                                          \
+       && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
+       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
+       && !defined __cplusplus)
 #   undef fwrite
 #   define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; })
 #  endif