This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
[PATCH] Fixing scanf small bug
- From: Hamed Malek <hamed at bamdad dot org>
- To: libc-alpha <libc-alpha at sources dot redhat dot com>
- Date: Wed, 06 Apr 2005 20:35:11 +0430
- Subject: [PATCH] Fixing scanf small bug
When decimal-point is more than one byte, scanf fails to recognize
numbers starting with plus or minus sign following decimal-point.
Attached is the correct version of previous patch which adds matched
decimal point after it succeed.
hamed
--- libc/stdio-common/vfscanf.c.orig 2005-03-23 14:37:27.000000000 +0430
+++ libc/stdio-common/vfscanf.c 2005-04-06 18:02:20.753986174 +0430
@@ -1602,6 +1602,8 @@
if (c == EOF)
input_error ();
+ got_dot = got_e = 0;
+
/* Check for a sign. */
if (c == L_('-') || c == L_('+'))
{
@@ -1652,6 +1654,17 @@
conv_error ();
}
+ else
+ {
+ /* Add all the characters. */
+ for (cmpp = decimal; *cmpp != '\0'; ++cmpp)
+ ADDW ((unsigned char) *cmpp);
+ if (width > 0)
+ width = avail;
+ got_dot = 1;
+
+ c = inchar ();
+ }
if (width > 0)
width = avail;
#endif
@@ -1759,7 +1772,6 @@
}
}
- got_dot = got_e = 0;
do
{
if (ISDIGIT (c))