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