From c843e5b33ae305c06c98a6832b2de669fc1ef39c Mon Sep 17 00:00:00 2001 From: "L. David Baron" Date: Sat, 3 Jul 2010 12:25:37 -0700 Subject: [PATCH] Make nsStyleAnimation::ComputeDistance not crash when given -moz-transform: none. (Bug 576761) (pending review) --HG-- extra : transplant_source : _hY%B1%23%2Cb%D2%19R%BB%24%A4%9C%1B%16R%5C%8Ee --- layout/style/nsStyleAnimation.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/layout/style/nsStyleAnimation.cpp b/layout/style/nsStyleAnimation.cpp index ef9bec08ffa8..c1d71d114910 100644 --- a/layout/style/nsStyleAnimation.cpp +++ b/layout/style/nsStyleAnimation.cpp @@ -408,11 +408,18 @@ nsStyleAnimation::ComputeDistance(nsCSSProperty aProperty, const nsCSSValueList *list1 = aStartValue.GetCSSValueListValue(); const nsCSSValueList *list2 = aEndValue.GetCSSValueListValue(); + nsStyleTransformMatrix matrix1, matrix2; // initialized to identity + PRBool dummy; - nsStyleTransformMatrix matrix1 = - nsStyleTransformMatrix::ReadTransforms(list1, nsnull, nsnull, dummy), - matrix2 = - nsStyleTransformMatrix::ReadTransforms(list2, nsnull, nsnull, dummy); + if (list1->mValue.GetUnit() != eCSSUnit_None) { + matrix1 = nsStyleTransformMatrix::ReadTransforms(list1, nsnull, + nsnull, dummy); + } + if (list2->mValue.GetUnit() != eCSSUnit_None) { + matrix2 = nsStyleTransformMatrix::ReadTransforms(list2, nsnull, + nsnull, dummy); + } + double diff; double squareDistance = 0.0; for (PRUint32 i = 0; i < 4; ++i) {