Start the autobuild script with /bin/sh.
[gnulib.git] / tests / test-vasprintf-posix.c
index af6ed71..5b43891 100644 (file)
@@ -34,7 +34,6 @@
 static void
 test_function (int (*my_asprintf) (char **, const char *, ...))
 {
-  char buf[8];
   int repeat;
 
   /* Test return value convention.  */
@@ -250,6 +249,20 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
+  { /* Rounding can turn a ...FFF into a ...000.
+       This shows a MacOS X 10.3.9 (Darwin 7.9) bug.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%.1a %d", 1.999, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "0x1.0p+1 33") == 0
+           || strcmp (result, "0x2.0p+0 33") == 0
+           || strcmp (result, "0x4.0p-1 33") == 0
+           || strcmp (result, "0x8.0p-2 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
   { /* Width.  */
     char *result;
     int retval =
@@ -543,6 +556,21 @@ test_function (int (*my_asprintf) (char **, const char *, ...))
     free (result);
   }
 
+  { /* Rounding can turn a ...FFF into a ...000.
+       This shows a MacOS X 10.3.9 (Darwin 7.9) bug and a
+       glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+    char *result;
+    int retval =
+      my_asprintf (&result, "%.1La %d", 1.999L, 33, 44, 55);
+    ASSERT (result != NULL);
+    ASSERT (strcmp (result, "0x1.0p+1 33") == 0
+           || strcmp (result, "0x2.0p+0 33") == 0
+           || strcmp (result, "0x4.0p-1 33") == 0
+           || strcmp (result, "0x8.0p-2 33") == 0);
+    ASSERT (retval == strlen (result));
+    free (result);
+  }
+
   { /* Width.  */
     char *result;
     int retval =