Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com From: "Dave Korn" To: Cc: Subject: RE: sscanf problem Date: Mon, 4 Apr 2005 19:06:42 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit In-Reply-To: Message-ID: X-OriginalArrivalTime: 04 Apr 2005 18:06:46.0982 (UTC) FILETIME=[10F11660:01C53941] ----Original Message---- >From: Dave Korn >Sent: 04 April 2005 18:51 > ----Original Message---- >> From: Michael Hines >> Sent: 04 April 2005 19:43 > >> The following program prints >> i=1 x=0 >> instead of >> i=0 x=10 >> when using the latest version of cygwin1.dll. >> >> >> #include >> int main() { >> int i; >> double x; >> x = 10; >> i = sscanf("n", "%lf", &x); >> printf("i=%d x=%g\n", i, x); >> return 0; >> } >> >> >> -Michael Hines > > > Heh, the interminable newlib-sscanf-bug strikes again! It's mis-parsing > the n as being the first letter of 'nan', which is a valid input to %f. > CV sent a patch upstream to the newlib maintainers last week but I guess > it hasn't made it into the source yet. No, hang on, on checking the newlib-l archive that seems to have been something to do with a zero exponent. This is a separate bug: it accepts the first one or two characters of 'nan' and says "ok, everything's still good", and then because it's reached the end of the string it treats that as a successful parse; it forgets to verify that it doesn't have an outstanding half-formed NaN. I'll post a (provisional) patch shortly. cheers, DaveK -- Can't think of a witty .sigline today.... -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/