This is the mail archive of the
ecos-patches@sourceware.org
mailing list for the eCos project.
Fix strtod() flaw.
- From: Sergei Organov <osv at javad dot com>
- To: ecos-patches at sources dot redhat dot com
- Date: Tue, 27 Dec 2005 21:50:30 +0300
- Subject: Fix strtod() flaw.
Hello,
strtod() bundled with eCos considers 'd' and 'D' to be synonyms for 'e'
and 'E' in floating point numbers though according to specification only
'e' and 'E' are allowed. The patch below fixes it.
diff -a -u -r1.1.1.1 strtod.cxx
--- packages/language/c/libc/stdlib/current/src/strtod.cxx 7 Dec 2005 12:06:34 -0000 1.1.1.1
+++ packages/language/c/libc/stdlib/current/src/strtod.cxx 27 Dec 2005 18:22:28 -0000
@@ -83,7 +83,7 @@
// MACROS
-#define Ise(c) ((c == 'e') || (c == 'E') || (c == 'd') || (c == 'D'))
+#define Ise(c) ((c == 'e') || (c == 'E'))
#define Issign(c) ((c == '-') || (c == '+'))
#define Val(c) ((c - '0'))
@@ -219,7 +219,7 @@
if(Ise(*nptr))
{
conv_done = 1;
- if(*++nptr != '\0') /* skip e|E|d|D */
+ if(*++nptr != '\0') /* skip e|E */
{ /* ! ([nptr]xxx[.[yyy]]e) */
while(isspace(*nptr)) nptr++; /* Ansi allows spaces after e */
diff -a -u -r1.1.1.1 ChangeLog
--- packages/language/c/libc/stdlib/current/ChangeLog 7 Dec 2005 12:06:34 -0000 1.1.1.1
+++ packages/language/c/libc/stdlib/current/ChangeLog 27 Dec 2005 18:42:26 -0000
@@ -1,3 +1,8 @@
+2005-12-27 Sergei Organov <osv@javad.com>
+
+ * src/strtod.cxx (Ise): 'd' and 'D' aren't allowed in floating
+ formats.
+
2004-08-18 Fredrik Hederstierna <fredrik@wespot.com>
2004-08-18 Jonathan Larmour <jifl@eCosCentric.com>