diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp index 49e3f3ef825..e79d25f55df 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.cpp @@ -26,21 +26,31 @@ jni::local_ref StateWrapperImpl::initHybrid( jni::local_ref StateWrapperImpl::getStateDataImpl() { - folly::dynamic map = state_->getDynamic(); - return ReadableNativeMap::newObjectCxxArgs(std::move(map)); + if (auto state = state_.lock()) { + folly::dynamic map = state->getDynamic(); + return ReadableNativeMap::newObjectCxxArgs(std::move(map)); + } else { + return nullptr; + } } jni::local_ref StateWrapperImpl::getStateMapBufferDataImpl() { - MapBuffer map = state_->getMapBuffer(); - return JReadableMapBuffer::createWithContents(std::move(map)); + if (auto state = state_.lock()) { + MapBuffer map = state->getMapBuffer(); + return JReadableMapBuffer::createWithContents(std::move(map)); + } else { + return nullptr; + } } void StateWrapperImpl::updateStateImpl(NativeMap *map) { - // Get folly::dynamic from map - auto dynamicMap = map->consume(); - // Set state - state_->updateState(std::move(dynamicMap)); + if (auto state = state_.lock()) { + // Get folly::dynamic from map + auto dynamicMap = map->consume(); + // Set state + state->updateState(std::move(dynamicMap)); + } } void StateWrapperImpl::registerNatives() { diff --git a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h index 637efd7a83b..92ec87e9bb2 100644 --- a/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h +++ b/packages/react-native/ReactAndroid/src/main/jni/react/fabric/StateWrapperImpl.h @@ -30,7 +30,7 @@ class StateWrapperImpl : public jni::HybridClass { jni::local_ref getStateDataImpl(); void updateStateImpl(NativeMap *map); - State::Shared state_; + std::weak_ptr state_; private: jni::alias_ref jhybridobject_;