- 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,
_Out_opt_ LPPOINT pptOut)
{
PDC pdc;
/* Lock the DC */
pdc = DC_LockDc(hdc);
if (pdc == NULL)
POINT ptOut;
/* Call the internal function */
BOOL Ret = GreSetBrushOrg( hdc, x, y, &ptOut);
if (Ret)
{
EngSetLastError(ERROR_INVALID_HANDLE);
return FALSE;
/* 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 = ptOut;
}
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
{
_SEH2_YIELD(return FALSE);
}
_SEH2_END;
}
}
/* 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;
return Ret;
}
HPALETTE