patch from GvG, it fixing the bug for calc = when it showing e-309, Bug 1195, it have even affected python and other apps trying writing out 0 as text string. Modified: trunk/reactos/lib/crt/stdio/vfprintf.c Modified: trunk/reactos/lib/crt/stdio/vfwprint.c _____
Modified: trunk/reactos/lib/crt/stdio/vfprintf.c --- trunk/reactos/lib/crt/stdio/vfprintf.c 2006-01-05 22:24:28 UTC (rev 20593) +++ trunk/reactos/lib/crt/stdio/vfprintf.c 2006-01-05 22:54:30 UTC (rev 20594) @@ -210,12 +210,22 @@
} n;
n.__n = &__n; + + if ( exp_sign == L'g' || exp_sign == L'G' || exp_sign == L'e' || exp_sign == L'E' ) + { + if ( 0 == n.n->mantissal && 0 == n.n->mantissah && 0 == n.n->exponent ) + { + ie = 0; + } + else + { + ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff); + }
- if ( exp_sign == 'g' || exp_sign == 'G' || exp_sign == 'e' || exp_sign == 'E' ) { - ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff); - exponent = ie/3.321928; - } + exponent = ie/3.321928; + }
+ if ( exp_sign == 'g' || exp_sign == 'G' ) { type |= ZEROTRUNC; if ( exponent < -4 || fabs(exponent) >= precision ) _____
Modified: trunk/reactos/lib/crt/stdio/vfwprint.c --- trunk/reactos/lib/crt/stdio/vfwprint.c 2006-01-05 22:24:28 UTC (rev 20593) +++ trunk/reactos/lib/crt/stdio/vfwprint.c 2006-01-05 22:54:30 UTC (rev 20594) @@ -209,12 +209,22 @@
} n;
n.__n = &__n; + + if ( exp_sign == L'g' || exp_sign == L'G' || exp_sign == L'e' || exp_sign == L'E' ) + { + if ( 0 == n.n->mantissal && 0 == n.n->mantissah && 0 == n.n->exponent ) + { + ie = 0; + } + else + { + ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff); + }
- if ( exp_sign == L'g' || exp_sign == L'G' || exp_sign == L'e' || exp_sign == L'E' ) { - ie = ((unsigned int)n.n->exponent - (unsigned int)0x3ff); - exponent = ie/3.321928; - } + exponent = ie/3.321928; + }
+ if ( exp_sign == L'g' || exp_sign == L'G' ) { type |= ZEROTRUNC; if ( exponent < -4 || fabs(exponent) >= precision )