always check the result of SkMatrix::invert



git-svn-id: http://skia.googlecode.com/svn/trunk@3657 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 13bc718..c415a10 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1357,7 +1357,9 @@
         fDeviceCMDirty = true;  // |= (fExternalMatrix != *matrix)
 
         fExternalMatrix = *matrix;
-        matrix->invert(&fExternalInverse);
+        if (!matrix->invert(&fExternalInverse)) {
+            fExternalInverse.reset();
+        }
     }
 }
 
diff --git a/src/effects/Sk2DPathEffect.cpp b/src/effects/Sk2DPathEffect.cpp
index f2f9e37..dd067be 100644
--- a/src/effects/Sk2DPathEffect.cpp
+++ b/src/effects/Sk2DPathEffect.cpp
@@ -28,7 +28,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 Sk2DPathEffect::Sk2DPathEffect(const SkMatrix& mat) : fMatrix(mat) {
-    mat.invert(&fInverse);
+    if (!mat.invert(&fInverse)) {
+        fInverse.reset();
+    }
 }
 
 bool Sk2DPathEffect::filterPath(SkPath* dst, const SkPath& src, SkScalar* width) {
@@ -78,7 +80,9 @@
     SkASSERT(size <= sizeof(storage));
     buffer.read(storage, size);
     fMatrix.unflatten(storage);
-    fMatrix.invert(&fInverse);
+    if (!fMatrix.invert(&fInverse)) {
+        fInverse.reset();
+    }
 }
 
 ///////////////////////////////////////////////////////////////////////////////