[PATCH] oleaut32: unshadow cmp to make code work (Coverity)

Marcus Meissner marcus at jet.franken.de
Sun Jun 26 15:14:21 CDT 2011


Hi,

The code assumes "cmp" valid after the gotos, but it is a different
local variable, just with the same name which would work only by
pure luck and stack slot sharing.

Unshadow cmp to fix this.

CID 1805, 1804.

Ciao, Marcus
---
 dlls/oleaut32/vartype.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/dlls/oleaut32/vartype.c b/dlls/oleaut32/vartype.c
index 2b1307e..3dd65d8 100644
--- a/dlls/oleaut32/vartype.c
+++ b/dlls/oleaut32/vartype.c
@@ -4562,6 +4562,7 @@ HRESULT WINAPI VarDecAdd(const DECIMAL* pDecLeft, const DECIMAL* pDecRight, DECI
     /* Our decimals now have the same scale, we can add them as 96 bit integers */
     ULONG overflow = 0;
     BYTE sign = DECIMAL_POS;
+    int cmp;
 
     /* Correct for the sign of the result */
     if (DEC_SIGN(pDecLeft) && DEC_SIGN(pDecRight))
@@ -4572,7 +4573,7 @@ HRESULT WINAPI VarDecAdd(const DECIMAL* pDecLeft, const DECIMAL* pDecRight, DECI
     }
     else if (DEC_SIGN(pDecLeft) && !DEC_SIGN(pDecRight))
     {
-      int cmp = VARIANT_DecCmp(pDecLeft, pDecRight);
+      cmp = VARIANT_DecCmp(pDecLeft, pDecRight);
 
       /* -x + y : Negative if x > y */
       if (cmp > 0)
@@ -4593,7 +4594,7 @@ VarDecAdd_AsInvertedNegative:
     }
     else if (!DEC_SIGN(pDecLeft) && DEC_SIGN(pDecRight))
     {
-      int cmp = VARIANT_DecCmp(pDecLeft, pDecRight);
+      cmp = VARIANT_DecCmp(pDecLeft, pDecRight);
 
       /* x + -y : Negative if x <= y */
       if (cmp <= 0)
-- 
1.7.3.4




More information about the wine-patches mailing list