From 7a98f74438ac8da8bed5ebdb54c70ce24557a9d8 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Tue, 3 Jun 2014 10:13:22 -0700 Subject: [PATCH] Fix NPE when ripples are canceled due to visibility change BUG: 15406248 Change-Id: I63ce42fef8e1614372ee4a82e45eb15e8bbe1fe3 --- graphics/java/android/graphics/drawable/RippleDrawable.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index 9d7a8b6071e2d..543f4fbf72feb 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -441,8 +441,11 @@ public class RippleDrawable extends LayerDrawable { final int count = mAnimatingRipplesCount; final Ripple[] ripples = mAnimatingRipples; for (int i = 0; i < count; i++) { - ripples[i].cancel(); + // Calling cancel may remove the ripple from the animating ripple + // array, so cache the reference before nulling it out. + final Ripple ripple = ripples[i]; ripples[i] = null; + ripple.cancel(); } mAnimatingRipplesCount = 0;