- Use internal function for setting brush origin. Related to CORE-13110.

svn path=/trunk/; revision=74422
This commit is contained in:
James Tabor 2017-04-27 19:20:09 +00:00
parent 4535174660
commit a1290edbe7

View file

@ -168,40 +168,30 @@ NtGdiSetBrushOrg(
_In_ INT y, _In_ INT y,
_Out_opt_ LPPOINT pptOut) _Out_opt_ LPPOINT pptOut)
{ {
PDC pdc;
/* Lock the DC */ POINT ptOut;
pdc = DC_LockDc(hdc); /* Call the internal function */
if (pdc == NULL) BOOL Ret = GreSetBrushOrg( hdc, x, y, &ptOut);
if (Ret)
{ {
EngSetLastError(ERROR_INVALID_HANDLE); /* Check if the old origin was requested */
return FALSE; if (pptOut != NULL)
{
/* Enter SEH for buffer transfer */
_SEH2_TRY
{
/* Probe and copy the old origin */
ProbeForWrite(pptOut, sizeof(POINT), 1);
*pptOut = ptOut;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
_SEH2_YIELD(return FALSE);
}
_SEH2_END;
}
} }
return Ret;
/* Check if the old origin was requested */
if (pptOut != NULL)
{
/* Enter SEH for buffer transfer */
_SEH2_TRY
{
/* Probe and copy the old origin */
ProbeForWrite(pptOut, sizeof(POINT), 1);
*pptOut = pdc->pdcattr->ptlBrushOrigin;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
DC_UnlockDc(pdc);
_SEH2_YIELD(return FALSE);
}
_SEH2_END;
}
/* Call the internal function */
DC_vSetBrushOrigin(pdc, x, y);
/* Unlock the DC and return success */
DC_UnlockDc(pdc);
return TRUE;
} }
HPALETTE HPALETTE