From b5cd3e8fef9a3b74bd0dadf9065be9f0c6f615a6 Mon Sep 17 00:00:00 2001 From: Robert Longson Date: Wed, 17 Jun 2009 22:39:59 +0100 Subject: [PATCH] Bug 327756 - ASSERTION: can't find nsISVGValue interface on mMatrix. r=roc --- content/svg/content/src/nsSVGMatrix.h | 9 +++++++++ content/svg/content/src/nsSVGSVGElement.cpp | 3 +-- content/svg/content/src/nsSVGTransformList.cpp | 3 +-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/content/svg/content/src/nsSVGMatrix.h b/content/svg/content/src/nsSVGMatrix.h index c61e62c0a1e8..6d1f5d2f2612 100644 --- a/content/svg/content/src/nsSVGMatrix.h +++ b/content/svg/content/src/nsSVGMatrix.h @@ -81,4 +81,13 @@ NS_NewSVGMatrix(nsIDOMSVGMatrix** result, already_AddRefed NS_NewSVGMatrix(const gfxMatrix &aMatrix); +#define NS_ENSURE_NATIVE_MATRIX(obj, retval) \ + { \ + nsresult rv; \ + if (retval) \ + *retval = nsnull; \ + nsCOMPtr val = do_QueryInterface(obj, &rv); \ + NS_ENSURE_SUCCESS(rv, NS_ERROR_DOM_SVG_WRONG_TYPE_ERR); \ + } + #endif //__NS_SVGMATRIX_H__ diff --git a/content/svg/content/src/nsSVGSVGElement.cpp b/content/svg/content/src/nsSVGSVGElement.cpp index 2ac1ba5f7cde..2d1273b81720 100644 --- a/content/svg/content/src/nsSVGSVGElement.cpp +++ b/content/svg/content/src/nsSVGSVGElement.cpp @@ -697,8 +697,7 @@ NS_IMETHODIMP nsSVGSVGElement::CreateSVGTransformFromMatrix(nsIDOMSVGMatrix *matrix, nsIDOMSVGTransform **_retval) { - if (!matrix) - return NS_ERROR_DOM_SVG_WRONG_TYPE_ERR; + NS_ENSURE_NATIVE_MATRIX(matrix, _retval); nsresult rv = NS_NewSVGTransform(_retval); if (NS_FAILED(rv)) diff --git a/content/svg/content/src/nsSVGTransformList.cpp b/content/svg/content/src/nsSVGTransformList.cpp index 1d20170a2e28..e58ecfa96448 100644 --- a/content/svg/content/src/nsSVGTransformList.cpp +++ b/content/svg/content/src/nsSVGTransformList.cpp @@ -367,8 +367,7 @@ NS_IMETHODIMP nsSVGTransformList::CreateSVGTransformFromMatrix(nsIDOMSVGMatrix *matrix, nsIDOMSVGTransform **_retval) { - if (!matrix) - return NS_ERROR_DOM_SVG_WRONG_TYPE_ERR; + NS_ENSURE_NATIVE_MATRIX(matrix, _retval); nsresult rv = NS_NewSVGTransform(_retval); if (NS_FAILED(rv))