diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java index 9013581e444..d2a166a8eb6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/DynamicFromMap.java @@ -9,9 +9,11 @@ package com.facebook.react.bridge; import androidx.annotation.Nullable; import androidx.core.util.Pools.SimplePool; +import com.facebook.infer.annotation.Nullsafe; import java.util.Objects; /** Implementation of Dynamic wrapping a ReadableMap. */ +@Nullsafe(Nullsafe.Mode.LOCAL) class DynamicFromMap implements Dynamic { private static final ThreadLocal> sPool = new ThreadLocal>() { @@ -28,8 +30,11 @@ class DynamicFromMap implements Dynamic { private DynamicFromMap() {} public static DynamicFromMap create(ReadableMap map, String name) { - // NULLSAFE_FIXME[Nullable Dereference] - DynamicFromMap dynamic = sPool.get().acquire(); + SimplePool poolValueHolder = sPool.get(); + DynamicFromMap dynamic = null; + if (poolValueHolder != null) { + dynamic = poolValueHolder.acquire(); + } if (dynamic == null) { dynamic = new DynamicFromMap(); } @@ -42,8 +47,10 @@ class DynamicFromMap implements Dynamic { public void recycle() { mMap = null; mName = null; - // NULLSAFE_FIXME[Nullable Dereference] - sPool.get().release(this); + SimplePool poolValueHolder = sPool.get(); + if (poolValueHolder != null) { + poolValueHolder.release(this); + } } @Override @@ -79,20 +86,18 @@ class DynamicFromMap implements Dynamic { } @Override - public String asString() { + public @Nullable String asString() { if (mMap == null || mName == null) { throw new IllegalStateException("This dynamic value has been recycled"); } - // NULLSAFE_FIXME[Return Not Nullable] return mMap.getString(mName); } @Override - public ReadableArray asArray() { + public @Nullable ReadableArray asArray() { if (mMap == null || mName == null) { throw new IllegalStateException("This dynamic value has been recycled"); } - // NULLSAFE_FIXME[Return Not Nullable] return mMap.getArray(mName); }