Fix "numberf" function to correctly handle 'g' format specifier.
Debugged by Michael Fritscher <michael(a)fritscher.net>
(fixed a couple return values while I was in there)
Modified: trunk/reactos/tools/rbuild/ssprintf.cpp
_____
Modified: trunk/reactos/tools/rbuild/ssprintf.cpp
--- trunk/reactos/tools/rbuild/ssprintf.cpp 2005-09-17 11:20:25 UTC
(rev 17894)
+++ trunk/reactos/tools/rbuild/ssprintf.cpp 2005-09-17 13:48:38 UTC
(rev 17895)
@@ -126,7 +126,7 @@
if (type & LEFT)
type &= ~ZEROPAD;
if (base < 2 || base > 36)
- return 0;
+ return false;
c = (type & ZEROPAD) ? '0' : ' ';
sign = 0;
if (type & SIGN) {
@@ -205,7 +205,7 @@
if (base < 2 || base > 36)
return 0;
c = (type & ZEROPAD) ? L'0' : L' ';
- sign = 0;
+ sign = false;
if (type & SIGN) {
if (num < 0) {
sign = L'-';
@@ -305,7 +305,9 @@
if ( exp_sign == 'g' || exp_sign == 'G' ) {
type |= ZEROTRUNC;
if ( exponent < -4 || fabs(exponent) >= precision )
- exp_sign -= 2; // g -> e and G -> E
+ exp_sign -= 2; // g -> e and G -> E
+ else
+ exp_sign = 'f';
}
if ( exp_sign == 'e' || exp_sign == 'E' ) {
@@ -495,7 +497,9 @@
{
type |= ZEROTRUNC;
if ( exponent < -4 || fabs(exponent) >= precision )
- exp_sign -= 2; // g -> e and G -> E
+ exp_sign -= 2; // g -> e and G -> E
+ else
+ exp_sign = L'f';
}
if ( exp_sign == L'e' || exp_sign == L'E' )
@@ -694,7 +698,9 @@
if ( exp_sign == 'g' || exp_sign == 'G' ) {
type |= ZEROTRUNC;
if ( exponent < -4 || fabs(exponent) >= precision )
- exp_sign -= 2; // g -> e and G -> E
+ exp_sign -= 2; // g -> e and G -> E
+ else
+ exp_sign = 'f';
}
if ( exp_sign == 'e' || exp_sign == 'E' ) {
@@ -789,7 +795,7 @@
{
while ( intr > 0.0 )
{
- p=intr;
+ p=intr;
intr/=10.0L;
modfl(intr, &intr);
@@ -896,7 +902,9 @@
if ( exp_sign == L'g' || exp_sign == L'G' ) {
type |= ZEROTRUNC;
if ( exponent < -4 || fabs(exponent) >= precision )
- exp_sign -= 2; // g -> e and G -> E
+ exp_sign -= 2; // g -> e and G -> E
+ else
+ exp_sign = 'f';
}
if ( exp_sign == L'e' || exp_sign == L'E' ) {
Show replies by date