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

View file

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