bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] doc: document Solaris printf bug with large float precisions


From: Paul Eggert
Subject: [PATCH] doc: document Solaris printf bug with large float precisions
Date: Wed, 22 Dec 2010 15:20:47 -0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7

In keeping with the theme of documenting relatively-unimportant
Solaris bugs rather than working around them, I pushed this doc
fix, the need for which I found when running "make check" with
the latest coreutils.

Here's a simpler test case that illustrates the Solaris bug,
in case there's anybody here who can get bug fixes
into Solaris:

#include <stdio.h>
int
main (void)
{
  char buf[1000];
  int n = snprintf (buf, sizeof buf, "%.511f", 1.0);
  printf ("%d %s\n", n, buf);
  return 0;
}

This prints "513 0.0...." rather than the correct "513 1.0....".


>From 1c90a6dffb9b96d79188bee2924765d1ff8ce034 Mon Sep 17 00:00:00 2001
From: Paul Eggert <address@hidden>
Date: Wed, 22 Dec 2010 15:13:59 -0800
Subject: [PATCH] doc: document Solaris printf bug with large float precisions

* doc/posix-functions/dprintf.texi (dprintf):
* doc/posix-functions/fprintf.texi (fprintf):
* doc/posix-functions/printf.texi (printf):
* doc/posix-functions/snprintf.texi (snprintf):
* doc/posix-functions/sprintf.texi (sprintf):
* doc/posix-functions/vdprintf.texi (vdprintf):
* doc/posix-functions/vfprintf.texi (vfprintf):
* doc/posix-functions/vprintf.texi (vprintf):
* doc/posix-functions/vsnprintf.texi (vsnprintf):
* doc/posix-functions/vsprintf.texi (vsprintf):
Mention that these functions mishandle large floating point
precisions on Solaris 10.  The same bug is also present in Solaris
8, and I assume earlier.  This causes "cd gnulib-tests; make
check" to fail on Solaris 8 (and I assume, later) when building
the latest coreutils, in test-vasprintf-posix's call to
my_asprintf (&result, "%.4000f %d", 1.0, 99).  I have not checked
the wide flavors (e.g., wprintf) so this patch just updates the
documentation for the narrow ones.
---
 ChangeLog                          |   20 ++++++++++++++++++++
 doc/posix-functions/dprintf.texi   |    5 +++++
 doc/posix-functions/fprintf.texi   |    5 +++++
 doc/posix-functions/printf.texi    |    5 +++++
 doc/posix-functions/snprintf.texi  |    5 +++++
 doc/posix-functions/sprintf.texi   |    5 +++++
 doc/posix-functions/vdprintf.texi  |    5 +++++
 doc/posix-functions/vfprintf.texi  |    5 +++++
 doc/posix-functions/vprintf.texi   |    5 +++++
 doc/posix-functions/vsnprintf.texi |    5 +++++
 doc/posix-functions/vsprintf.texi  |    5 +++++
 11 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 2dc4aeb..276a1ca 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,25 @@
 2010-12-22  Paul Eggert  <address@hidden>
 
+       doc: document Solaris printf bug with large float precisions
+       * doc/posix-functions/dprintf.texi (dprintf):
+       * doc/posix-functions/fprintf.texi (fprintf):
+       * doc/posix-functions/printf.texi (printf):
+       * doc/posix-functions/snprintf.texi (snprintf):
+       * doc/posix-functions/sprintf.texi (sprintf):
+       * doc/posix-functions/vdprintf.texi (vdprintf):
+       * doc/posix-functions/vfprintf.texi (vfprintf):
+       * doc/posix-functions/vprintf.texi (vprintf):
+       * doc/posix-functions/vsnprintf.texi (vsnprintf):
+       * doc/posix-functions/vsprintf.texi (vsprintf):
+       Mention that these functions mishandle large floating point
+       precisions on Solaris 10.  The same bug is also present in Solaris
+       8, and I assume earlier.  This causes "cd gnulib-tests; make
+       check" to fail on Solaris 8 (and I assume, later) when building
+       the latest coreutils, in test-vasprintf-posix's call to
+       my_asprintf (&result, "%.4000f %d", 1.0, 99).  I have not checked
+       the wide flavors (e.g., wprintf) so this patch just updates the
+       documentation for the narrow ones.
+
        test-posixtm.c: add two tests
        * tests/test-posixtm.c: Add two tests, to highlight the
        bug in Solaris 10 (and earlier) localtime.  Gnulib doesn't work
diff --git a/doc/posix-functions/dprintf.texi b/doc/posix-functions/dprintf.texi
index dc39022..3f9f54b 100644
--- a/doc/posix-functions/dprintf.texi
+++ b/doc/posix-functions/dprintf.texi
@@ -24,4 +24,9 @@ glibc-2.3.6.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/fprintf.texi b/doc/posix-functions/fprintf.texi
index f394e88..116d20e 100644
--- a/doc/posix-functions/fprintf.texi
+++ b/doc/posix-functions/fprintf.texi
@@ -69,4 +69,9 @@ mingw.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/printf.texi b/doc/posix-functions/printf.texi
index b380ebc..fb894d6 100644
--- a/doc/posix-functions/printf.texi
+++ b/doc/posix-functions/printf.texi
@@ -69,4 +69,9 @@ mingw.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/snprintf.texi 
b/doc/posix-functions/snprintf.texi
index 9e8f5ad..23fa5e7 100644
--- a/doc/posix-functions/snprintf.texi
+++ b/doc/posix-functions/snprintf.texi
@@ -89,4 +89,9 @@ OSF/1 5.1.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/sprintf.texi b/doc/posix-functions/sprintf.texi
index 5ebd16f..cce9627 100644
--- a/doc/posix-functions/sprintf.texi
+++ b/doc/posix-functions/sprintf.texi
@@ -61,4 +61,9 @@ MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/vdprintf.texi 
b/doc/posix-functions/vdprintf.texi
index 20a6ef7..3fa9b73 100644
--- a/doc/posix-functions/vdprintf.texi
+++ b/doc/posix-functions/vdprintf.texi
@@ -42,4 +42,9 @@ BeOS.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/vfprintf.texi 
b/doc/posix-functions/vfprintf.texi
index 179e67a..7f41c0d 100644
--- a/doc/posix-functions/vfprintf.texi
+++ b/doc/posix-functions/vfprintf.texi
@@ -69,4 +69,9 @@ mingw.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/vprintf.texi b/doc/posix-functions/vprintf.texi
index ac53388..213461c 100644
--- a/doc/posix-functions/vprintf.texi
+++ b/doc/posix-functions/vprintf.texi
@@ -69,4 +69,9 @@ mingw.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/vsnprintf.texi 
b/doc/posix-functions/vsnprintf.texi
index 9784f6d..8f6d903 100644
--- a/doc/posix-functions/vsnprintf.texi
+++ b/doc/posix-functions/vsnprintf.texi
@@ -89,4 +89,9 @@ HP-UX 11, OSF/1 5.1.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
diff --git a/doc/posix-functions/vsprintf.texi 
b/doc/posix-functions/vsprintf.texi
index 82c7949..3178538 100644
--- a/doc/posix-functions/vsprintf.texi
+++ b/doc/posix-functions/vsprintf.texi
@@ -61,4 +61,9 @@ MacOS X 10.3, FreeBSD 6.0, NetBSD 5.0.
 
 Portability problems not fixed by Gnulib:
 @itemize
address@hidden
+This function mishandles large floating point precisions
+(for example, formatting 1.0 with @samp{"%.511f"})
+on some platforms:
+Solaris 10.
 @end itemize
-- 
1.7.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]