diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java index 5b0c0c312be4b0..d95c62a97825f0 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/scroll/ScrollEvent.java @@ -11,12 +11,14 @@ import androidx.core.util.Pools; import com.facebook.infer.annotation.Assertions; import com.facebook.react.bridge.Arguments; +import com.facebook.react.bridge.ReactSoftException; import com.facebook.react.bridge.WritableMap; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.events.Event; /** A event dispatched from a ScrollView scrolling. */ public class ScrollEvent extends Event { + private static String TAG = ScrollEvent.class.getSimpleName(); private static final Pools.SynchronizedPool EVENTS_POOL = new Pools.SynchronizedPool<>(3); @@ -90,7 +92,13 @@ public static ScrollEvent obtain( @Override public void onDispose() { - EVENTS_POOL.release(this); + try { + EVENTS_POOL.release(this); + } catch (IllegalStateException e) { + // This exception can be thrown when an event is double-released. + // This is a problem but won't cause user-visible impact, so it's okay to fail silently. + ReactSoftException.logSoftException(TAG, e); + } } private ScrollEvent() {}