mirror of
https://github.com/reactos/reactos.git
synced 2025-06-19 00:45:30 +00:00
[WIN32K]
- Make XFORMOBJ_iSetXform fail, when the XFORM is invalid (eM11 or eM22 are 0) - Handle error in GreModifyWorldTransform svn path=/trunk/; revision=56422
This commit is contained in:
parent
ca47627718
commit
0e6b454957
2 changed files with 10 additions and 7 deletions
|
@ -461,20 +461,23 @@ GreModifyWorldTransform(
|
||||||
case MWT_LEFTMULTIPLY:
|
case MWT_LEFTMULTIPLY:
|
||||||
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
||||||
XFORMOBJ_vInit(&xoSrc, &mxSrc);
|
XFORMOBJ_vInit(&xoSrc, &mxSrc);
|
||||||
XFORMOBJ_iSetXform(&xoSrc, pxform);
|
if (XFORMOBJ_iSetXform(&xoSrc, pxform) == DDI_ERROR)
|
||||||
|
return FALSE;
|
||||||
XFORMOBJ_iCombine(&xoDC, &xoSrc, &xoDC);
|
XFORMOBJ_iCombine(&xoDC, &xoSrc, &xoDC);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MWT_RIGHTMULTIPLY:
|
case MWT_RIGHTMULTIPLY:
|
||||||
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
||||||
XFORMOBJ_vInit(&xoSrc, &mxSrc);
|
XFORMOBJ_vInit(&xoSrc, &mxSrc);
|
||||||
XFORMOBJ_iSetXform(&xoSrc, pxform);
|
if (XFORMOBJ_iSetXform(&xoSrc, pxform) == DDI_ERROR)
|
||||||
|
return FALSE;
|
||||||
XFORMOBJ_iCombine(&xoDC, &xoDC, &xoSrc);
|
XFORMOBJ_iCombine(&xoDC, &xoDC, &xoSrc);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MWT_MAX+1: // Must be MWT_SET????
|
case MWT_MAX+1: // Must be MWT_SET????
|
||||||
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
|
||||||
XFORMOBJ_iSetXform(&xoDC, pxform);
|
if (XFORMOBJ_iSetXform(&xoDC, pxform) == DDI_ERROR)
|
||||||
|
return FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -160,10 +160,10 @@ XFORMOBJ_iSetXform(
|
||||||
PMATRIX pmx = XFORMOBJ_pmx(pxo);
|
PMATRIX pmx = XFORMOBJ_pmx(pxo);
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
if (!pxo || !pxform)
|
if (!pxo || !pxform) return DDI_ERROR;
|
||||||
{
|
|
||||||
return DDI_ERROR;
|
/* Check if the xform is valid */
|
||||||
}
|
if ((pxform->eM11 == 0) || (pxform->eM22 == 0)) return DDI_ERROR;
|
||||||
|
|
||||||
/* Copy members */
|
/* Copy members */
|
||||||
FLOATOBJ_SetFloat(&pmx->efM11, pxform->eM11);
|
FLOATOBJ_SetFloat(&pmx->efM11, pxform->eM11);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue