- 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:
Timo Kreuzer 2012-04-25 17:29:50 +00:00
parent ca47627718
commit 0e6b454957
2 changed files with 10 additions and 7 deletions

View file

@ -461,20 +461,23 @@ GreModifyWorldTransform(
case MWT_LEFTMULTIPLY:
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
XFORMOBJ_vInit(&xoSrc, &mxSrc);
XFORMOBJ_iSetXform(&xoSrc, pxform);
if (XFORMOBJ_iSetXform(&xoSrc, pxform) == DDI_ERROR)
return FALSE;
XFORMOBJ_iCombine(&xoDC, &xoSrc, &xoDC);
break;
case MWT_RIGHTMULTIPLY:
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
XFORMOBJ_vInit(&xoSrc, &mxSrc);
XFORMOBJ_iSetXform(&xoSrc, pxform);
if (XFORMOBJ_iSetXform(&xoSrc, pxform) == DDI_ERROR)
return FALSE;
XFORMOBJ_iCombine(&xoDC, &xoDC, &xoSrc);
break;
case MWT_MAX+1: // Must be MWT_SET????
XFORMOBJ_vInit(&xoDC, &pdc->pdcattr->mxWorldToPage);
XFORMOBJ_iSetXform(&xoDC, pxform);
if (XFORMOBJ_iSetXform(&xoDC, pxform) == DDI_ERROR)
return FALSE;
break;
default:

View file

@ -160,10 +160,10 @@ XFORMOBJ_iSetXform(
PMATRIX pmx = XFORMOBJ_pmx(pxo);
/* Check parameters */
if (!pxo || !pxform)
{
return DDI_ERROR;
}
if (!pxo || !pxform) return DDI_ERROR;
/* Check if the xform is valid */
if ((pxform->eM11 == 0) || (pxform->eM22 == 0)) return DDI_ERROR;
/* Copy members */
FLOATOBJ_SetFloat(&pmx->efM11, pxform->eM11);