Only dereference interpolator cache WeakReference once Fixes #432
diff --git a/lottie/src/main/java/com/airbnb/lottie/Keyframe.java b/lottie/src/main/java/com/airbnb/lottie/Keyframe.java index df352b8..91bddfd 100644 --- a/lottie/src/main/java/com/airbnb/lottie/Keyframe.java +++ b/lottie/src/main/java/com/airbnb/lottie/Keyframe.java
@@ -151,12 +151,13 @@ cp2.y = MiscUtils.clamp(cp2.y, -MAX_CP_VALUE, MAX_CP_VALUE); int hash = Utils.hashFor(cp1.x, cp1.y, cp2.x, cp2.y); WeakReference<Interpolator> interpolatorRef = pathInterpolatorCache.get(hash); - if (interpolatorRef == null || interpolatorRef.get() == null) { + if (interpolatorRef != null) { + interpolator = interpolatorRef.get(); + } + if (interpolatorRef == null || interpolator == null) { interpolator = PathInterpolatorCompat.create( cp1.x / scale, cp1.y / scale, cp2.x / scale, cp2.y / scale); pathInterpolatorCache.put(hash, new WeakReference<>(interpolator)); - } else { - interpolator = pathInterpolatorCache.get(hash).get(); } } else {