From 63a3da9846bb339eff9e382a66cf0b1c83871cea Mon Sep 17 00:00:00 2001 From: pollyzhang Date: Tue, 25 Oct 2022 15:16:01 +0800 Subject: [PATCH] fix(vfs): fix vfs crash --- .../android/src/main/cpp/src/bridge/entry.cc | 15 ++++++++------- .../include/vfs/handler/jni_delegate_handler.h | 4 ---- .../main/cpp/src/handler/jni_delegate_handler.cc | 1 - 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/framework/android/src/main/cpp/src/bridge/entry.cc b/framework/android/src/main/cpp/src/bridge/entry.cc index 840e32c4c..9ace9ac8e 100644 --- a/framework/android/src/main/cpp/src/bridge/entry.cc +++ b/framework/android/src/main/cpp/src/bridge/entry.cc @@ -422,11 +422,12 @@ jboolean RunScriptFromUri(JNIEnv* j_env, auto bridge = std::any_cast>(runtime->GetData(kBridgeSlot)); auto ref = bridge->GetRef(); runtime->GetScope()->SetUriLoader(loader); - FOOTSTONE_CHECK(j_aasset_manager); - auto asset_handler = std::make_shared(); - asset_handler->SetAAssetManager(j_env, j_aasset_manager); - asset_handler->SetWorkerTaskRunner(runtime->GetEngine()->GetWorkerTaskRunner()); - loader->RegisterUriHandler(kAssetSchema, asset_handler); + if (j_aasset_manager) { + auto asset_handler = std::make_shared(); + asset_handler->SetAAssetManager(j_env, j_aasset_manager); + asset_handler->SetWorkerTaskRunner(runtime->GetEngine()->GetWorkerTaskRunner()); + loader->RegisterUriHandler(kAssetSchema, asset_handler); + } auto save_object = std::make_shared(j_env, j_cb); auto is_local_file = j_aasset_manager != nullptr; auto func = [runtime, save_object_ = std::move(save_object), script_name, @@ -440,7 +441,7 @@ jboolean RunScriptFromUri(JNIEnv* j_env, .time_since_epoch() .count(); - FOOTSTONE_DLOG(INFO) << "runScriptFromUri = " << (time_end - time_begin) << ", uri = " << uri; + FOOTSTONE_DLOG(INFO) << "runScriptFromUri time = " << (time_end - time_begin) << ", uri = " << uri; if (flag) { hippy::bridge::CallJavaMethod(save_object_->GetObj(), INIT_CB_STATE::SUCCESS); } else { @@ -584,7 +585,7 @@ jint OnCreateVfs(JNIEnv* j_env, __unused jobject j_object, jobject j_vfs_manager void OnDestroyVfs(__unused JNIEnv* j_env, __unused jobject j_object, jint j_id) { auto id = footstone::checked_numeric_cast(j_id); - bool flag = JniDelegateHandler::GetJniDelegateHandlerMap().Erase(id); + bool flag = hippy::global_data_holder.Erase(id); FOOTSTONE_DCHECK(flag); } diff --git a/modules/vfs/android/src/main/cpp/include/vfs/handler/jni_delegate_handler.h b/modules/vfs/android/src/main/cpp/include/vfs/handler/jni_delegate_handler.h index 80fc8355c..0d0c23a3d 100644 --- a/modules/vfs/android/src/main/cpp/include/vfs/handler/jni_delegate_handler.h +++ b/modules/vfs/android/src/main/cpp/include/vfs/handler/jni_delegate_handler.h @@ -59,15 +59,11 @@ class JniDelegateHandler : public UriHandler, public std::enable_shared_from_thi static inline AsyncWrapperMap& GetAsyncWrapperMap() { return wrapper_map_; } - static inline JniDelegateHandlerMap& GetJniDelegateHandlerMap() { - return delegate_map_; - } private: std::shared_ptr delegate_; static std::atomic request_id_; static AsyncWrapperMap wrapper_map_; - static JniDelegateHandlerMap delegate_map_; }; void OnJniDelegateCallback(JNIEnv* j_env, __unused jobject j_object, jobject j_holder); diff --git a/modules/vfs/android/src/main/cpp/src/handler/jni_delegate_handler.cc b/modules/vfs/android/src/main/cpp/src/handler/jni_delegate_handler.cc index f3e5c9c17..1d0da18a8 100644 --- a/modules/vfs/android/src/main/cpp/src/handler/jni_delegate_handler.cc +++ b/modules/vfs/android/src/main/cpp/src/handler/jni_delegate_handler.cc @@ -99,7 +99,6 @@ using SyncContext = hippy::vfs::UriHandler::SyncContext; JniDelegateHandler::AsyncWrapperMap JniDelegateHandler::wrapper_map_; std::atomic JniDelegateHandler::request_id_ = 1; -JniDelegateHandler::JniDelegateHandlerMap JniDelegateHandler::delegate_map_; std::atomic g_delegate_id = 1;