From e21ed675ec082b6d12b4201edd5b78708e951178 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Mon, 21 Oct 2019 14:40:44 -0700 Subject: [PATCH] Refactor FabricSoLoader to ensure sDidInit is accessed correctly Summary: sDidInit can be accessed from different threads, this diff refactors the definition of this variable to be volatile and also to be assigned at the end of the staticInit() method. Changelog: Ensure proper initialization of FabricSoLoder Reviewed By: ejanzer Differential Revision: D18010919 fbshipit-source-id: 3ec7b19fdc15056b90fc01281b8c3888e93a7dd3 --- .../main/java/com/facebook/react/fabric/FabricSoLoader.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricSoLoader.java b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricSoLoader.java index 289184a750d..0e4529c8575 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricSoLoader.java +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricSoLoader.java @@ -15,19 +15,18 @@ import com.facebook.soloader.SoLoader; import com.facebook.systrace.Systrace; public class FabricSoLoader { - private static boolean sDidInit = false; + private static volatile boolean sDidInit = false; public static void staticInit() { if (sDidInit) { return; } - sDidInit = true; - Systrace.beginSection( Systrace.TRACE_TAG_REACT_JAVA_BRIDGE, "FabricSoLoader.staticInit::load:fabricjni"); ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_START); SoLoader.loadLibrary("fabricjni"); ReactMarker.logMarker(ReactMarkerConstants.LOAD_REACT_NATIVE_SO_FILE_END); Systrace.endSection(TRACE_TAG_REACT_JAVA_BRIDGE); + sDidInit = true; } }