- Fix user-mode region attribute handling in IntGdiSetRegionOwner.

svn path=/trunk/; revision=64178
This commit is contained in:
Jérôme Gardou 2014-09-17 11:40:21 +00:00
parent 215e0d90a1
commit 00b90311f3

View file

@ -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