From: Jérôme Gardou Date: Wed, 17 Sep 2014 11:40:21 +0000 (+0000) Subject: [WIN32K] X-Git-Tag: backups/0.3.17@66124~551 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=00b90311f30c9ee6878e744033fe03b5f91d3bf4 [WIN32K] - Fix user-mode region attribute handling in IntGdiSetRegionOwner. svn path=/trunk/; revision=64178 --- diff --git a/reactos/win32ss/gdi/ntgdi/region.c b/reactos/win32ss/gdi/ntgdi/region.c index e6f737f1c2d..cda069cccc5 100644 --- a/reactos/win32ss/gdi/ntgdi/region.c +++ b/reactos/win32ss/gdi/ntgdi/region.c @@ -2323,23 +2323,22 @@ IntGdiSetRegionOwner(HRGN hRgn, DWORD OwnerMask) PRGN_ATTR prgnattr; PPROCESSINFO ppi; - prgn = REGION_LockRgn(hRgn); + prgn = RGNOBJAPI_Lock(hRgn, &prgnattr); if (!prgn) { return FALSE; } - prgnattr = GDIOBJ_pvGetObjectAttr(&prgn->BaseObject); - if (prgnattr) + if (prgnattr != &prgn->rgnattr) { GDIOBJ_vSetObjectAttr(&prgn->BaseObject, NULL); - prgn->prgnattr = NULL; + prgn->prgnattr = &prgn->rgnattr; ppi = PsGetCurrentProcessWin32Process(); GdiPoolFree(ppi->pPoolRgnAttr, prgnattr); } RGNOBJAPI_Unlock(prgn); - return GreSetObjectOwner(hRgn, OwnerMask); + return GreSetObjectOwner(hRgn, OwnerMask); } INT