tree 4bc7dbd8ddc483914228fec3a76514e5d9819f5b
parent 3b5387ab6a95e59f6c3f44ba9fd97c986982b33e
author Wenbin Liu <liuwenbin168@126.com> 1639435579 +0800
committer GitHub <noreply@github.com> 1639435579 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJht807CRBK7hj4Ov3rIwAA+kUIADwGj56qBHNDi1duvDQMWivp
 eVqqZnnsBt7G3YpSXqz2d4FCL9v+kKLkUtSzeaHWlksfw9ZcFD9QVpIidLmnSC+z
 pKcMRxYMafATGDZvNcEo8IorwRAAq4cvXv7LvDd+i1miZj3/TPCoSgP0m2HvTGSV
 AIDhXsOO2oU0/JcQ6oa0BeOpPl9YZ8tzEbB+2KGnyH7JMKcKwQg6Q4GM3U1JD0Qf
 dcq/mkngSWSVXnzQCThBrtvYiKIjJxpYOtqUin8/QXPpsmyBapKXcqu+uUbQTJa1
 I5jBKONlXwL8JJ1I9QK1mWZsnZfNXVJLRcv3IrOnSphpk9chUdtoGC72/c+Xn/Y=
 =+vMD
 -----END PGP SIGNATURE-----
 

Fix a potential NPE race conditions (#1959)

This PR addresses the issue #1958 , although the crash is pretty hard to reproducible, the enhancement will definitely make it more robust.

The issue was in com.airbnb.lottie.LottieDrawable#buildCompositionLayer method.
The related code is:

  private void buildCompositionLayer() {
    compositionLayer = new CompositionLayer(
        this, LayerParser.parse(composition), composition.getLayers(), composition);
    if (outlineMasksAndMattes) {
      compositionLayer.setOutlineMasksAndMattes(true);
    }
  }
The crash exception stack prints:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.airbnb.lottie.LottieComposition.getLayers()' on a null object reference
       at com.airbnb.lottie.LottieDrawable.buildCompositionLayer(LottieDrawable.java:298)
       ...
As we can see, the exception occurs at composition.getLayers(), but before executing this statement, the LayerParser.parse(composition) statement also refers to the composition object, which was fine, but after that this object had been set to null, thus caused NPE.

I think this issue is very similar to the issues resolved in PR #1917