From 00b90311f30c9ee6878e744033fe03b5f91d3bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Gardou?= Date: Wed, 17 Sep 2014 11:40:21 +0000 Subject: [PATCH] [WIN32K] - Fix user-mode region attribute handling in IntGdiSetRegionOwner. svn path=/trunk/; revision=64178 --- reactos/win32ss/gdi/ntgdi/region.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) 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