!2527 修复worker析构时出现cppcrash

Merge pull request !2527 from 任堂宇/master
This commit is contained in:
openharmony_ci 2022-10-09 12:06:00 +00:00 committed by Gitee
commit e5ac734ba5
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 19 additions and 11 deletions

View File

@ -398,11 +398,11 @@ public:
void WorkersetInfo(EcmaVM *hostVm, EcmaVM *workerVm)
{
auto thread = workerVm->GetJSThread();
if (thread != nullptr) {
auto tid = thread->GetThreadId();
if (tid != 0) {
if (hostVm != nullptr && workerVm != nullptr) {
WorkerList_.emplace(tid, workerVm);
if (thread != nullptr) {
auto tid = thread->GetThreadId();
if (tid != 0) {
if (hostVm != nullptr && workerVm != nullptr) {
WorkerList_.emplace(tid, workerVm);
}
}
}
@ -420,12 +420,17 @@ public:
return workerVm;
}
bool DeleteWorker(uint32_t tid)
bool DeleteWorker(EcmaVM *hostVm, EcmaVM *workerVm)
{
auto iter = WorkerList_.find(tid);
if (iter != WorkerList_.end()) {
WorkerList_.erase(iter);
return true;
if (hostVm != nullptr && workerVm != nullptr) {
auto tid = workerVm->GetJSThread()->GetThreadId();
if (tid == 0) {return false;}
auto iter = WorkerList_.find(tid);
if (iter != WorkerList_.end()) {
WorkerList_.erase(iter);
return true;
}
return false;
}
return false;
}

View File

@ -348,7 +348,10 @@ void JSNApi::addWorker(EcmaVM *hostVm, EcmaVM *workerVm)
bool JSNApi::DeleteWorker(EcmaVM *hostVm, EcmaVM *workerVm)
{
return hostVm->DeleteWorker(workerVm->GetJSThread()->GetThreadId());
if (hostVm != nullptr && workerVm != nullptr) {
return hostVm->DeleteWorker(hostVm, workerVm);
}
return false;
}
Local<ObjectRef> JSNApi::GetUncaughtException(const EcmaVM *vm)