Javier Cantero : user32: Fix side effect in SubtractRect().

Alexandre Julliard julliard at winehq.org
Wed Mar 26 14:34:12 CDT 2014


Module: wine
Branch: master
Commit: 1f15169f725894edfa2f33e16b8827d3d2c11a6f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=1f15169f725894edfa2f33e16b8827d3d2c11a6f

Author: Javier Cantero <jcantero at escomposlinux.org>
Date:   Thu Mar 20 16:07:32 2014 +0100

user32: Fix side effect in SubtractRect().

---

 dlls/user32/uitools.c |    8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/uitools.c b/dlls/user32/uitools.c
index c11a1d3..1afb1c89 100644
--- a/dlls/user32/uitools.c
+++ b/dlls/user32/uitools.c
@@ -1421,14 +1421,14 @@ BOOL WINAPI SubtractRect( LPRECT dest, const RECT *src1, const RECT *src2 )
         SetRectEmpty( dest );
         return FALSE;
     }
-    *dest = *src1;
     if (IntersectRect( &tmp, src1, src2 ))
     {
-        if (EqualRect( &tmp, dest ))
+        if (EqualRect( &tmp, src1 ))
         {
             SetRectEmpty( dest );
             return FALSE;
         }
+        *dest = *src1;
         if ((tmp.top == dest->top) && (tmp.bottom == dest->bottom))
         {
             if (tmp.left == dest->left) dest->left = tmp.right;
@@ -1440,6 +1440,10 @@ BOOL WINAPI SubtractRect( LPRECT dest, const RECT *src1, const RECT *src2 )
             else if (tmp.bottom == dest->bottom) dest->bottom = tmp.top;
         }
     }
+    else
+    {
+        *dest = *src1;
+    }
     return TRUE;
 }
 




More information about the wine-cvs mailing list