From 92b8c21287ac6b0ac3630b8af169700c53143a4e Mon Sep 17 00:00:00 2001 From: zhongjianfei Date: Thu, 23 Mar 2023 09:37:23 +0800 Subject: [PATCH] Fix FRS Crash bugs. Signed-off-by: zhongjianfei Change-Id: Icc023a2202992e003baadf169dab991496226285 --- .../bridge/js_frontend/engine/jsi/ark_js_runtime.cpp | 5 +++++ .../bridge/js_frontend/engine/jsi/ark_js_runtime.h | 1 + .../bridge/js_frontend/engine/jsi/jsi_base_utils.cpp | 12 ++++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.cpp b/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.cpp index 2e25284da22..11bca1c2d4e 100644 --- a/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.cpp +++ b/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.cpp @@ -125,6 +125,11 @@ bool ArkJSRuntime::ExecuteModuleBuffer(const uint8_t* data, int32_t size, const #else JSExecutionScope executionScope(vm_); LocalScope scope(vm_); + if (needUpdate_) { + // VM load adc file first time should set this tag. + JSNApi::SetRecordWithBundleNameTag(vm_, true); + needUpdate_ = false; + } bool ret = JSNApi::ExecuteModuleBuffer(vm_, data, size, filename, needUpdate); HandleUncaughtException(); return ret; diff --git a/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.h b/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.h index 3cde52c827b..0a69d82c9bd 100644 --- a/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.h +++ b/frameworks/bridge/js_frontend/engine/jsi/ark_js_runtime.h @@ -201,6 +201,7 @@ private: std::string libPath_ {}; bool usingExistVM_ = false; bool isDebugMode_ = true; + bool needUpdate_ = true; DebuggerPostTask debuggerPostTask_; ErrorEventHandler errorCallback_; #if defined(PREVIEW) diff --git a/frameworks/bridge/js_frontend/engine/jsi/jsi_base_utils.cpp b/frameworks/bridge/js_frontend/engine/jsi/jsi_base_utils.cpp index ced6231d30d..fe00e2f4f74 100644 --- a/frameworks/bridge/js_frontend/engine/jsi/jsi_base_utils.cpp +++ b/frameworks/bridge/js_frontend/engine/jsi/jsi_base_utils.cpp @@ -348,8 +348,10 @@ std::string JsiBaseUtils::TranslateStack(const std::string& stackStr, const std: replace(str.begin(), str.end(), '/', '\\'); } char* ch = strrchr((char*)str.c_str(), '.'); - int index = ch - str.c_str(); - str.insert(index, "_"); + if (ch != nullptr) { + int index = ch - str.c_str(); + str.insert(index, "_"); + } runningPageTag = str; } @@ -398,8 +400,10 @@ std::string JsiBaseUtils::TranslateBySourceMap(const std::string& stackStr, cons if (!isAppPage) { std::string tag = std::as_const(pageUrl); char* ch = strrchr((char*)tag.c_str(), '.'); - int index = ch - tag.c_str(); - tag.insert(index, "_"); + if (ch != nullptr) { + int index = ch - tag.c_str(); + tag.insert(index, "_"); + } runningPageTag = tag; } // find per line of stack -- Gitee