delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/04/27/16:04:16

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
Message-ID: <3AE9BB2B.555C60D7@ece.gatech.edu>
Date: Fri, 27 Apr 2001 14:32:11 -0400
From: "Charles S. Wilson" <cwilson AT ece DOT gatech DOT edu>
X-Mailer: Mozilla 4.75 [en] (WinNT; U)
X-Accept-Language: en
MIME-Version: 1.0
To: Mark Schamberger <Mark_Schamberger-A11451 AT email DOT mot DOT com>
CC: cygwin AT cygwin DOT com, newlib AT sources DOT redhat DOT com
Subject: Re: bug report: sscanf problem with cygwin 1.3.1-1
References: <3AE9A1EA DOT EC0961C6 AT labs DOT mot DOT com>

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
> mas AT labs DOT mot DOT com
> 
> --
> 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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019