Merge "Fixed NaN exceptions in EdgeEffect" into sc-dev
diff --git a/core/java/android/widget/EdgeEffect.java b/core/java/android/widget/EdgeEffect.java
index 1951194..ae426d2 100644
--- a/core/java/android/widget/EdgeEffect.java
+++ b/core/java/android/widget/EdgeEffect.java
@@ -626,20 +626,31 @@
             // assume rotations of increments of 90 degrees
             float x = mTmpPoints[10] - mTmpPoints[8];
             float width = right - left;
-            float vecX = dampStretchVector(Math.max(-1f, Math.min(1f, x / width)));
+            float vecX = 0f;
+            if (width > 0) {
+                vecX = dampStretchVector(Math.max(-1f, Math.min(1f, x / width)));
+            }
+
             float y = mTmpPoints[11] - mTmpPoints[9];
             float height = bottom - top;
-            float vecY = dampStretchVector(Math.max(-1f, Math.min(1f, y / height)));
-            renderNode.stretch(
-                    left,
-                    top,
-                    right,
-                    bottom,
-                    vecX,
-                    vecY,
-                    mWidth,
-                    mHeight
-            );
+            float vecY = 0f;
+            if (height > 0) {
+                vecY = dampStretchVector(Math.max(-1f, Math.min(1f, y / height)));
+            }
+
+            boolean hasStretchVectors = Float.compare(vecX, 0) != 0 || Float.compare(vecY, 0) != 0;
+            if (right > left && bottom > top && mWidth > 0 && mHeight > 0 && hasStretchVectors) {
+                renderNode.stretch(
+                        left,
+                        top,
+                        right,
+                        bottom,
+                        vecX,
+                        vecY,
+                        mWidth,
+                        mHeight
+                );
+            }
         } else {
             // This is TYPE_STRETCH and drawing into a Canvas that isn't a Recording Canvas,
             // so no effect can be shown. Just end the effect.