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 <[EMAIL PROTECTED]>
+
+ * src/strtod.cxx (Ise): 'd' and 'D' aren't allowed in floating
+ formats.
+
2004-08-18 Fredrik Hederstierna <[EMAIL PROTECTED]>
2004-08-18 Jonathan Larmour <[EMAIL PROTECTED]>