In message <[EMAIL PROTECTED]> on Thu, 11 Dec 2003 17:53:51 +0100 (CET), Richard
Levitte - VMS Whacker <[EMAIL PROTECTED]> said:
levitte> I get ooo.1 with BIO_printf() and 1000.1 with printf(). It's clear to
levitte> me that this is in fact a bug in OpenSSL (especially since fmtfp()
levitte> does all the calculations itself, and doesn't rely on printf() in any
levitte> way). I'm investigating right now.
(actually, I got 000.1, not ooo.1...)
OK, the bug is found. This is the code that causes the problem, do
you think you can spot it? A hint: the integer part will *always* be
truncated to the three least significant digits...
/* convert integer part */
do {
iconvert[iplace++] =
(caps ? "0123456789ABCDEF"
: "0123456789abcdef")[intpart % 10];
intpart = (intpart / 10);
} while (intpart && (iplace < (int)sizeof(iplace)));
if (iplace == sizeof iplace)
iplace--;
iconvert[iplace] = 0;
I'll produce patches shortly, but first I've got to figure out some
funnies with the fractional part. The following source:
BIO_printf(myBio, "float: %.5f\n", (float) 21000.123456);
produces this:
000.12305
(well actually, after I've corrected the integer part bug, it actually
outputs 21000.12305 :-)).
-----
Please consider sponsoring my work on free software.
See http://www.free.lp.se/sponsoring.html for details.
You don't have to be rich, a $10 donation is appreciated!
--
Richard Levitte \ Tunnlandsv�gen 3 \ [EMAIL PROTECTED]
[EMAIL PROTECTED] \ S-168 36 BROMMA \ T: +46-8-26 52 47
\ SWEDEN \ or +46-708-26 53 44
Procurator Odiosus Ex Infernis -- [EMAIL PROTECTED]
Member of the OpenSSL development team: http://www.openssl.org/
Unsolicited commercial email is subject to an archival fee of $400.
See <http://www.stacken.kth.se/~levitte/mail/> for more info.
______________________________________________________________________
OpenSSL Project http://www.openssl.org
Development Mailing List [EMAIL PROTECTED]
Automated List Manager [EMAIL PROTECTED]