Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2000-03-17 23:40:20 +0300
committerJeff Johnston <jjohnstn@redhat.com>2000-03-17 23:40:20 +0300
commitfae4c299f14fc23e2829c8656992eba21f79242a (patch)
treeff8f3e806131f03f673bf83832fedeeba820f098 /newlib/libc
parent2be36bd9c4bd7fa7e73821fe902f036f86ab0d0f (diff)
Fri Mar 17 15:37:00 2000 Jeff Johnston <jjohnstn@cygnus.com>
* libc/stdio/vfscanf.c (__svfscanf): Fixed floating point code to update nread as each character is processed instead of using buffer contents which throw away leading zeroes.
Diffstat (limited to 'newlib/libc')
-rw-r--r--newlib/libc/stdio/vfscanf.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/newlib/libc/stdio/vfscanf.c b/newlib/libc/stdio/vfscanf.c
index 00fd98d76..f1d328a20 100644
--- a/newlib/libc/stdio/vfscanf.c
+++ b/newlib/libc/stdio/vfscanf.c
@@ -765,6 +765,7 @@ __svfscanf (fp, fmt0, ap)
*p++ = c;
width--;
fskip:
+ ++nread;
if (--fp->_r > 0)
fp->_p++;
else
@@ -786,15 +787,20 @@ __svfscanf (fp, fmt0, ap)
{
/* no digits at all */
while (p > buf)
- ungetc (*(u_char *)-- p, fp);
+ {
+ ungetc (*(u_char *)-- p, fp);
+ --nread;
+ }
goto match_failure;
}
/* just a bad exponent (e and maybe sign) */
c = *(u_char *)-- p;
+ --nread;
if (c != 'e' && c != 'E')
{
_CAST_VOID ungetc (c, fp); /* sign */
c = *(u_char *)-- p;
+ --nread;
}
_CAST_VOID ungetc (c, fp);
}
@@ -839,7 +845,6 @@ __svfscanf (fp, fmt0, ap)
}
nassigned++;
}
- nread += p - buf;
break;
}
#endif /* FLOATING_POINT */