[PATCH 1/4] oleaut32: Fix some VarCyFrom* tests.

Michael Stefaniuc mstefani at redhat.de
Thu Oct 6 18:36:57 CDT 2011


Due to a broken EXPECTRES macro the EXPECT_OVERFLOW accepts S_OK return
values.

---
EXPECT_OVERFLOW is fixed in the next patch of the series.


 dlls/oleaut32/tests/vartype.c |    8 ++++++--
 dlls/oleaut32/vartype.c       |    2 +-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c
index b4f0731..e46a9b6 100644
--- a/dlls/oleaut32/tests/vartype.c
+++ b/dlls/oleaut32/tests/vartype.c
@@ -3720,7 +3720,9 @@ static void test_VarCyFromUI8(void)
   CONVERT(VarCyFromUI8, 0); EXPECTCY(0);
   CONVERT(VarCyFromUI8, 1); EXPECTCY(1);
   CONVERT_I8(VarCyFromUI8, 214748, 1566804068); EXPECTCY64(2147483647ul, 4294951488ul);
-  CONVERT_I8(VarCyFromUI8, 214748, 1566804069); EXPECT_OVERFLOW;
+  CONVERT_I8(VarCyFromUI8, 214748, 1566804069); EXPECTCY64(2147483647ul, 4294961488ul);
+  CONVERT_I8(VarCyFromUI8, 214748, 1566804070); EXPECT_OVERFLOW;
+  CONVERT_I8(VarCyFromUI8, 214749, 1566804068); EXPECT_OVERFLOW;
 }
 
 static void test_VarCyFromDec(void)
@@ -3736,7 +3738,9 @@ static void test_VarCyFromDec(void)
   CONVERT_DEC(VarCyFromDec,0,0,0,1);    EXPECTCY(1);
 
   CONVERT_DEC64(VarCyFromDec,0,0,0,214748, 1566804068); EXPECTCY64(2147483647ul, 4294951488ul);
-  CONVERT_DEC64(VarCyFromDec,0,0,0,214748, 1566804069); EXPECT_OVERFLOW;
+  CONVERT_DEC64(VarCyFromDec,0,0,0,214748, 1566804069); EXPECTCY64(2147483647ul, 4294961488ul);
+  CONVERT_DEC64(VarCyFromDec,0,0,0,214748, 1566804070); EXPECT_OVERFLOW;
+  CONVERT_DEC64(VarCyFromDec,0,0,0,214749, 1566804068); EXPECT_OVERFLOW;
 
   CONVERT_DEC(VarCyFromDec,2,0,0,100);     EXPECTCY(1);
   CONVERT_DEC(VarCyFromDec,2,0x80,0,100);  EXPECTCY(-1);
diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c
index 3dd65d8..2ab5438 100644
--- a/dlls/oleaut32/vartype.c
+++ b/dlls/oleaut32/vartype.c
@@ -3764,7 +3764,7 @@ HRESULT WINAPI VarCyFromI8(LONG64 llIn, CY* pCyOut)
  */
 HRESULT WINAPI VarCyFromUI8(ULONG64 ullIn, CY* pCyOut)
 {
-    if (ullIn >= (I8_MAX/CY_MULTIPLIER)) return DISP_E_OVERFLOW;
+    if (ullIn > (I8_MAX/CY_MULTIPLIER)) return DISP_E_OVERFLOW;
     pCyOut->int64 = ullIn * CY_MULTIPLIER;
     return S_OK;
 }
-- 
1.7.6.4



More information about the wine-patches mailing list