From: Justin Klaassen Date: Sat, 23 Jul 2016 02:30:03 +0000 (-0700) Subject: Fix NPE in ValueAnimator X-Git-Tag: android-x86-7.1-r1~3129^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=543a7ed7af;p=android-x86%2Fframeworks-base.git Fix NPE in ValueAnimator - Reset mAnimationEndRequested to false in ValueAnimator#start(boolean) so that previously canceled animated (with a start delay) can be canceled again. - In ObjectAnimator#animateValue(float) check if target == null regardless of mTarget == null since it's possible the target was explicitly set to null prior to the animator being cancelled. Bug: 30190459 Change-Id: I6da55737df30a28f48355fc7a41ab91d05979deb --- diff --git a/core/java/android/animation/ObjectAnimator.java b/core/java/android/animation/ObjectAnimator.java index 5c4b979ccb3c..9a2aa302a4ba 100644 --- a/core/java/android/animation/ObjectAnimator.java +++ b/core/java/android/animation/ObjectAnimator.java @@ -977,7 +977,7 @@ public final class ObjectAnimator extends ValueAnimator { @Override void animateValue(float fraction) { final Object target = getTarget(); - if (mTarget != null && target == null) { + if (target == null) { // We lost the target reference, cancel and clean up. cancel(); return; diff --git a/core/java/android/animation/ValueAnimator.java b/core/java/android/animation/ValueAnimator.java index 0c7ee2c8c2fe..e3f8fa49f9dd 100644 --- a/core/java/android/animation/ValueAnimator.java +++ b/core/java/android/animation/ValueAnimator.java @@ -982,6 +982,7 @@ public class ValueAnimator extends Animator implements AnimationHandler.Animatio mStarted = true; mPaused = false; mRunning = false; + mAnimationEndRequested = false; // Resets mLastFrameTime when start() is called, so that if the animation was running, // calling start() would put the animation in the // started-but-not-yet-reached-the-first-frame phase.