From 2fce3630ab79422cdcbf2aec56b7f059309c00cf Mon Sep 17 00:00:00 2001 From: James Tabor Date: Fri, 4 Apr 2014 14:40:51 +0000 Subject: [PATCH] [User32] - Patch by Javier Cantero : Fix side effect in SubtractRect(). - Sync port from wine with modifications svn path=/trunk/; revision=62609 --- reactos/win32ss/user/user32/windows/rect.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/reactos/win32ss/user/user32/windows/rect.c b/reactos/win32ss/user/user32/windows/rect.c index 451407c3eb6..7ca28fbe227 100644 --- a/reactos/win32ss/user/user32/windows/rect.c +++ b/reactos/win32ss/user/user32/windows/rect.c @@ -193,16 +193,20 @@ SubtractRect(LPRECT lprcDst, if(lprcDst == NULL || lprcSrc1 == NULL || lprcSrc2 == NULL) return(FALSE); - CopyRect(lprcDst, lprcSrc1); - if(!IntersectRect(&tempRect, lprcSrc1, lprcSrc2)) + { + *lprcDst = *lprcSrc1; return(TRUE); + } - if (EqualRect(&tempRect, lprcDst)) + if (EqualRect(&tempRect, lprcSrc1)) { SetRectEmpty(lprcDst); return FALSE; } + + *lprcDst = *lprcSrc1; + if(lprcDst->top == tempRect.top && lprcDst->bottom == tempRect.bottom) { if(lprcDst->left == tempRect.left)