From 91e26dba9d636e1f90cf13f9580e58083cf2c15c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Sun, 2 Jun 2013 14:30:48 +0000 Subject: [PATCH] [WIN32K] - Fix ExtCreateRegion implementation CORE-4600 #comment Fixed in r59143. Thanks Giannis for the hint. #resolve svn path=/trunk/; revision=59143 --- reactos/win32ss/gdi/ntgdi/region.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/reactos/win32ss/gdi/ntgdi/region.c b/reactos/win32ss/gdi/ntgdi/region.c index b2d98685ac1..d1cf0671f13 100644 --- a/reactos/win32ss/gdi/ntgdi/region.c +++ b/reactos/win32ss/gdi/ntgdi/region.c @@ -3599,6 +3599,8 @@ NtGdiExtCreateRegion( DWORD nCount = 0; DWORD iType = 0; DWORD dwSize = 0; + UINT i; + RECT* rects; NTSTATUS Status = STATUS_SUCCESS; MATRIX matrix; XFORMOBJ xo; @@ -3610,6 +3612,7 @@ NtGdiExtCreateRegion( nCount = RgnData->rdh.nCount; iType = RgnData->rdh.iType; dwSize = RgnData->rdh.dwSize; + rects = (RECT*)RgnData->Buffer; } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { @@ -3641,6 +3644,11 @@ NtGdiExtCreateRegion( _SEH2_TRY { + /* Insert the rectangles one by one */ + for(i=0; iBuffer, + Region->rdh.nCount * 2, + Region->Buffer, Region->Buffer)) { Status = STATUS_SUCCESS; } } } - else - { - /* Copy rect coordinates */ - RtlCopyMemory(Region->Buffer, - RgnData->Buffer, - nCount * sizeof(RECT)); - } } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) {