Fix "numberf" function to correctly handle 'g' format specifier. Debugged by Michael Fritscher michael@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' ) {