Commit a78490bf authored by André Hentschel's avatar André Hentschel Committed by Alexandre Julliard

oleaut32: Fix fractional calculation.

parent 297e559a
...@@ -390,7 +390,7 @@ static void test_VarFormat(void) ...@@ -390,7 +390,7 @@ static void test_VarFormat(void)
VARFMT(VT_R8,V_R8,8.0995,"#.##",S_OK,"8.1"); VARFMT(VT_R8,V_R8,8.0995,"#.##",S_OK,"8.1");
VARFMT(VT_R8,V_R8,0.0994,"#.##",S_OK,".1"); VARFMT(VT_R8,V_R8,0.0994,"#.##",S_OK,".1");
VARFMT(VT_R8,V_R8,1.00,"#,##0.00",S_OK,"1.00"); VARFMT(VT_R8,V_R8,1.00,"#,##0.00",S_OK,"1.00");
todo_wine VARFMT(VT_R8,V_R8,0.0995,"#.###",S_OK,".1"); VARFMT(VT_R8,V_R8,0.0995,"#.###",S_OK,".1");
/* 'out' is not cleared */ /* 'out' is not cleared */
......
...@@ -1296,8 +1296,7 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat, ...@@ -1296,8 +1296,7 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat,
/* Rounding the number */ /* Rounding the number */
if (have_frac > need_frac) if (have_frac > need_frac)
{ {
prgbDig = &rgbDig[have_int + need_frac ? need_frac + 1 : 0]; prgbDig = &rgbDig[have_int + need_frac];
if (*prgbDig < 5) prgbDig--;
have_frac = need_frac; have_frac = need_frac;
if (*prgbDig >= 5) if (*prgbDig >= 5)
{ {
...@@ -1320,10 +1319,10 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat, ...@@ -1320,10 +1319,10 @@ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat,
} }
else else
(*prgbDig)++; (*prgbDig)++;
/* We converted trailing digits to zeroes => have_frac has changed */
while (have_frac > 0 && rgbDig[have_int + have_frac - 1] == 0)
have_frac--;
} }
/* We converted trailing digits to zeroes => have_frac has changed */
while (have_frac > 0 && rgbDig[have_int + have_frac - 1] == 0)
have_frac--;
} }
TRACE("have_int=%d,need_int=%d,have_frac=%d,need_frac=%d,pad=%d,exp=%d\n", TRACE("have_int=%d,need_int=%d,have_frac=%d,need_frac=%d,pad=%d,exp=%d\n",
have_int, need_int, have_frac, need_frac, pad, exponent); have_int, need_int, have_frac, need_frac, pad, exponent);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment