diff --git a/interfaces/kits/js/src/native_devicemanager_js.cpp b/interfaces/kits/js/src/native_devicemanager_js.cpp index f7a1825bd8bb91fffeca56ce41c040227110bbd1..e0571b6d7d7c987f7a410bb8447fbe5304510d8c 100644 --- a/interfaces/kits/js/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js/src/native_devicemanager_js.cpp @@ -1848,7 +1848,7 @@ void DeviceManagerNapi::CallAsyncWorkSync(napi_env env, { napi_value resourceName; napi_create_string_latin1(env, "GetTrustListInfo", NAPI_AUTO_LENGTH, &resourceName); - napi_create_async_work( + napi_status result = napi_create_async_work( env, nullptr, resourceName, [](napi_env env, void *data) { (void)env; @@ -1874,17 +1874,21 @@ void DeviceManagerNapi::CallAsyncWorkSync(napi_env env, reinterpret_cast(data); CallGetTrustedDeviceListStatusSync(env, status, dInfoListAsyncCallbackInfo); napi_delete_async_work(env, dInfoListAsyncCallbackInfo->asyncWork); - delete dInfoListAsyncCallbackInfo; + DeleteAsyncCallbackInfo(dInfoListAsyncCallbackInfo); }, (void *)deviceInfoListAsyncCallbackInfo, &deviceInfoListAsyncCallbackInfo->asyncWork); napi_queue_async_work_with_qos(env, deviceInfoListAsyncCallbackInfo->asyncWork, napi_qos_user_initiated); + if (result != napi_ok) { + LOGE("CallAsyncWorkSync failed result %{public}d", result); + DeleteAsyncCallbackInfo(deviceInfoListAsyncCallbackInfo); + } } void DeviceManagerNapi::CallAsyncWork(napi_env env, DeviceInfoListAsyncCallbackInfo *deviceInfoListAsyncCallbackInfo) { napi_value resourceName; napi_create_string_latin1(env, "GetTrustListInfo", NAPI_AUTO_LENGTH, &resourceName); - napi_create_async_work( + napi_status result = napi_create_async_work( env, nullptr, resourceName, [](napi_env env, void *data) { DeviceInfoListAsyncCallbackInfo *devInfoListAsyncCallbackInfo = @@ -1909,11 +1913,14 @@ void DeviceManagerNapi::CallAsyncWork(napi_env env, DeviceInfoListAsyncCallbackI reinterpret_cast(data); CallGetTrustedDeviceListStatus(env, status, dInfoListAsyncCallbackInfo); napi_delete_async_work(env, dInfoListAsyncCallbackInfo->asyncWork); - delete dInfoListAsyncCallbackInfo; - dInfoListAsyncCallbackInfo = nullptr; + DeleteAsyncCallbackInfo(dInfoListAsyncCallbackInfo); }, (void *)deviceInfoListAsyncCallbackInfo, &deviceInfoListAsyncCallbackInfo->asyncWork); napi_queue_async_work_with_qos(env, deviceInfoListAsyncCallbackInfo->asyncWork, napi_qos_user_initiated); + if (result != napi_ok) { + LOGE("CallAsyncWork failed result %{public}d", result); + DeleteAsyncCallbackInfo(deviceInfoListAsyncCallbackInfo); + } } void DeviceManagerNapi::AsyncTaskCallback(napi_env env, void *data) diff --git a/interfaces/kits/js4.0/src/native_devicemanager_js.cpp b/interfaces/kits/js4.0/src/native_devicemanager_js.cpp index a33de825116e5f89824bcdd574e61fcfb8af4424..f50d257507961a1dd7ca552fcdf390e6169a5c8b 100644 --- a/interfaces/kits/js4.0/src/native_devicemanager_js.cpp +++ b/interfaces/kits/js4.0/src/native_devicemanager_js.cpp @@ -1251,7 +1251,7 @@ void DeviceManagerNapi::CallAsyncWork(napi_env env, { napi_value resourceName; napi_create_string_latin1(env, "GetAvailableListInfo", NAPI_AUTO_LENGTH, &resourceName); - napi_create_async_work( + napi_status result = napi_create_async_work( env, nullptr, resourceName, [](napi_env env, void *data) { DeviceBasicInfoListAsyncCallbackInfo *devBasicInfoListAsyncCallbackInfo = @@ -1276,11 +1276,14 @@ void DeviceManagerNapi::CallAsyncWork(napi_env env, reinterpret_cast(data); CallGetAvailableDeviceListStatus(env, status, dBasicInfoListAsyncCallbackInfo); napi_delete_async_work(env, dBasicInfoListAsyncCallbackInfo->asyncWork); - delete dBasicInfoListAsyncCallbackInfo; - dBasicInfoListAsyncCallbackInfo = nullptr; + DeleteAsyncCallbackInfo(dBasicInfoListAsyncCallbackInfo); }, (void *)deviceBasicInfoListAsyncCallbackInfo, &deviceBasicInfoListAsyncCallbackInfo->asyncWork); napi_queue_async_work_with_qos(env, deviceBasicInfoListAsyncCallbackInfo->asyncWork, napi_qos_user_initiated); + if (result != napi_ok) { + LOGE("CallAsyncWork failed result %{public}d", result); + DeleteAsyncCallbackInfo(deviceBasicInfoListAsyncCallbackInfo); + } } napi_value DeviceManagerNapi::CallDeviceList(napi_env env, napi_callback_info info, @@ -1296,6 +1299,9 @@ napi_value DeviceManagerNapi::CallDeviceList(napi_env env, napi_callback_info in LOGI("CallDeviceList for argc %{public}zu Type = %{public}d", argc, (int)eventHandleType); napi_create_reference(env, argv[0], 1, &deviceBasicInfoListAsyncCallbackInfo->callback); CallAsyncWork(env, deviceBasicInfoListAsyncCallbackInfo); + } else { + LOGE("CallDeviceList eventHandleType invalid"); + DeleteAsyncCallbackInfo(deviceBasicInfoListAsyncCallbackInfo); } napi_get_undefined(env, &result); return result; diff --git a/services/service/src/softbus/softbus_listener.cpp b/services/service/src/softbus/softbus_listener.cpp index e57d4338dd199ac80ea1dbe8fa8bfe94b3fd8ac9..036b1e43b4720a9337a35677ce98d7075bf8f8c0 100644 --- a/services/service/src/softbus/softbus_listener.cpp +++ b/services/service/src/softbus/softbus_listener.cpp @@ -1450,7 +1450,7 @@ int32_t SoftbusListener::GetAllTrustedDeviceList(const std::string &pkgName, con std::vector allProfile = DeviceProfileConnector::GetInstance().GetAllAccessControlProfile(); for (DistributedDeviceProfile::AccessControlProfile profile : allProfile) { - if (profile.GetBindType() == GROUP_TYPE_IDENTICAL_ACCOUNT_GROUP) { + if (profile.GetBindType() == GROUP_TYPE_IDENTICAL_ACCOUNT_GROUP || ACTIVE != profile.GetStatus()) { continue; } DistributedDeviceProfile::Accesser acer = profile.GetAccesser();