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 {