Confirmed. I used vsscanf() as my test case, but all *scanf() functions
in newlib call the same workhorse function, __svfscanf_r().

It looks like there is a problem handling decimal points in __svfscanf_r
(newlib/libc/stdio/vfscanf.c line 227) but I can't find it by inspection
and I don't have a debuggable cygwin1.dll handy.  There have been a few
changes in that code lately, but look at the recent diffs doesn't show
any reason why decimal point handling would stop working.

Can somebody with a debuggable version of newlib/cygwin1 try to track
this down -- Mark's sample code should generate a nice simple test case
with which to gdb the newlib code.  Meanwhile, I'll start a debuggable
kernel build...

--Chuck

Mark Schamberger wrote:
> 
> I have verified this problem on three different machines, each with the
> complete "current" installation of cygwin.  (Windows NT4.0 sp6, Windows
> 2000 sp1)
> 
> When using sscanf to read double values from a string, the resulting
> value is incorrect.  The following piece of code demonstrates the
> problem:
> 
> >>>>>>>>>>>>>>>>>>>>>
> #include <stdio.h>
> 
> int main(int argc, char *argv[])
> {
>         double d;
> 
>         sscanf("12.345","%lg",&d);
>         printf("%lg\n",d);
> }
> >>>>>>>>>>>>>>>>>>>>>
> 
> Instead of the expected 12.345, it results in 12345 (it appears that
> decimal points and exponents are not understood properly).
> 
> If I revert FROM cygwin 1.3.1-1 back TO cygwin 1.1.8-2, the bug
> disappears.
> 
> Anyone else experience this problem?
> 
> Thanks, Mark Schamberger
> [EMAIL PROTECTED]
> 
> --
> Want to unsubscribe from this list?
> Check out: http://cygwin.com/ml/#unsubscribe-simple

--
Want to unsubscribe from this list?
Check out: http://cygwin.com/ml/#unsubscribe-simple

Reply via email to