about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--stdlib/tst-strtod.c25
2 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8c553808fc..4ab2f59c83 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,7 @@
 
 	* stdlib/strtod.c (INTERNAL): Up the safety margin for cutting of
 	decimal input digits.
+	* stdlib/tst-strtod.c (main): Add test for strtof bug.
 
 2003-02-18  Ulrich Drepper  <drepper@redhat.com>
 
diff --git a/stdlib/tst-strtod.c b/stdlib/tst-strtod.c
index afd522b9cc..9496c3d776 100644
--- a/stdlib/tst-strtod.c
+++ b/stdlib/tst-strtod.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,96,97,98,99,2000,2001 Free Software Foundation, Inc.
+/* Copyright (C) 1991,96,97,98,99,2000,2001,2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -125,6 +125,29 @@ main (int argc, char ** argv)
       status = 1;
     }
 
+  const char input[] = "3752432815e-39";
+
+  float f1 = strtold (input, NULL);
+  float f2;
+  float f3 = strtof (input, NULL);
+  sscanf (input, "%g", &f2);
+
+  if (f1 != f2)
+    {
+      printf ("f1 = %a != f2 = %a\n", f1, f2);
+      status = 1;
+    }
+  if (f1 != f3)
+    {
+      printf ("f1 = %a != f3 = %a\n", f1, f3);
+      status = 1;
+    }
+  if (f2 != f3)
+    {
+      printf ("f2 = %a != f3 = %a\n", f2, f3);
+      status = 1;
+    }
+
   status |= long_dbl ();
 
   status |= locale_test ();