diff --git a/interfaces/plugin/src/sensor_js.cpp b/interfaces/plugin/src/sensor_js.cpp index d70df4a5d225650e053a0c88d7f7be22a3a90779..43dd065ccf54183b84e39ccbb02c24d8f7812a65 100644 --- a/interfaces/plugin/src/sensor_js.cpp +++ b/interfaces/plugin/src/sensor_js.cpp @@ -48,7 +48,7 @@ static void DataCallbackImpl(SensorEvent *event) { HiLog::Info(LABEL, "%{public}s in", __func__); if (event == nullptr) { - HiLog::Error(LABEL, "%{public}s event is null!", __func__); + HiLog::Error(LABEL, "%{public}s event is null", __func__); return; } int32_t sensorTypeId = event->sensorTypeId; @@ -226,7 +226,7 @@ static napi_value On(napi_env env, napi_callback_info info) if (argc == 3) { napi_value value = NapiGetNamedProperty(args[2], "interval", env); if (!IsMatchType(env, value, napi_number)) { - HiLog::Error(LABEL, "%{public}s argument should be napi_number type!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be napi_number type", __func__); return nullptr; } interval = GetCppInt64(value, env); @@ -258,7 +258,11 @@ static uint32_t RemoveCallback(napi_env env, int32_t sensorTypeId, napi_value ca { std::vector callbackInfos = g_onCallbackInfos[sensorTypeId]; std::vector::iterator iter; - for (iter = callbackInfos.begin(); iter != callbackInfos.end(); iter++) { + for (iter = callbackInfos.begin(); iter != callbackInfos.end();) { + if (*iter == nullptr || (*iter)->callback[0] == nullptr) { + HiLog::Error(LABEL, "%{public}s arg is null", __func__); + continue; + } napi_value sensorCallback = nullptr; napi_get_reference_value(env, (*iter)->callback[0], &sensorCallback); if (IsNapiValueSame(env, callback, sensorCallback)) { @@ -266,11 +270,13 @@ static uint32_t RemoveCallback(napi_env env, int32_t sensorTypeId, napi_value ca (*iter)->callback[0] = nullptr; delete *iter; *iter = nullptr; - callbackInfos.erase(iter); + callbackInfos.erase(iter++); if (callbackInfos.empty()) { g_onCallbackInfos.erase(sensorTypeId); return 0; } + } else { + ++iter; } } g_onCallbackInfos[sensorTypeId] = callbackInfos; @@ -285,7 +291,7 @@ static napi_value Off(napi_env env, napi_callback_info info) napi_value thisVar = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, NULL)); if (argc < 1 || argc > 2 || !IsMatchType(env, args[0], napi_number)) { - HiLog::Error(LABEL, "%{public}s Invalid input.", __func__); + HiLog::Error(LABEL, "%{public}s Invalid input", __func__); return nullptr; } int32_t sensorTypeId = GetCppInt32(args[0], env); @@ -316,11 +322,11 @@ static napi_value GetGeomagneticField(napi_env env, napi_callback_info info) napi_value thisVar = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, nullptr)); if (argc < 2 || argc > 3) { - HiLog::Error(LABEL, "%{public}s the number of input parameters does not match.", __func__); + HiLog::Error(LABEL, "%{public}s the number of input parameters does not match", __func__); return nullptr; } if (!IsMatchType(env, args[0], napi_object) || !IsMatchType(env, args[1], napi_number)) { - HiLog::Error(LABEL, "%{public}s argument is invalid.", __func__); + HiLog::Error(LABEL, "%{public}s argument is invalid", __func__); return nullptr; } napi_value napiLatitude = NapiGetNamedProperty(args[0], "latitude", env); @@ -384,7 +390,7 @@ static napi_value TransformCoordinateSystem(napi_env env, napi_callback_info inf napi_value napiAxisX = NapiGetNamedProperty(args[1], "axisX", env); napi_value napiAxisY = NapiGetNamedProperty(args[1], "axisY", env); if ((!IsMatchType(env, napiAxisX, napi_number)) || (!IsMatchType(env, napiAxisY, napi_number))) { - HiLog::Error(LABEL, "%{public}s argument should be napi_number type!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be napi_number type", __func__); return nullptr; } int32_t axisX = GetCppInt32(napiAxisX, env); @@ -418,7 +424,7 @@ static napi_value TransformCoordinateSystem(napi_env env, napi_callback_info inf return promise; } if (!IsMatchType(env, args[2], napi_function)) { - HiLog::Error(LABEL, "%{public}s argument should be napi_function type!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be napi_function type", __func__); delete asyncCallbackInfo; asyncCallbackInfo = nullptr; return nullptr; @@ -517,7 +523,7 @@ static napi_value GetDirection(napi_env env, napi_callback_info info) return promise; } if (!IsMatchType(env, args[1], napi_function)) { - HiLog::Error(LABEL, "%{public}s argument should be napi_function type!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be napi_function type", __func__); napi_value result; napi_get_undefined(env, &result); delete asyncCallbackInfo; @@ -536,7 +542,7 @@ static napi_value CreateQuaternion(napi_env env, napi_callback_info info) napi_value thisVar = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, nullptr)); if (argc < 1 || argc > 2 || !IsMatchArrayType(env, args[0])) { - HiLog::Error(LABEL, "%{public}s argument error!", __func__); + HiLog::Error(LABEL, "%{public}s argument error", __func__); return nullptr; } AsyncCallbackInfo *asyncCallbackInfo = new AsyncCallbackInfo { @@ -568,7 +574,7 @@ static napi_value CreateQuaternion(napi_env env, napi_callback_info info) return promise; } if (!IsMatchType(env, args[1], napi_function)) { - HiLog::Error(LABEL, "%{public}s argument should be function!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be function", __func__); delete asyncCallbackInfo; asyncCallbackInfo = nullptr; return nullptr; @@ -586,7 +592,7 @@ static napi_value GetAltitude(napi_env env, napi_callback_info info) NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, nullptr)); if (argc < 2 || argc > 3 || !IsMatchType(env, args[0], napi_number) || !IsMatchType(env, args[1], napi_number)) { - HiLog::Error(LABEL, "%{public}s Invalid input.", __func__); + HiLog::Error(LABEL, "%{public}s Invalid input", __func__); return nullptr; } AsyncCallbackInfo *asyncCallbackInfo = new AsyncCallbackInfo { @@ -633,7 +639,7 @@ static napi_value GetGeomagneticDip(napi_env env, napi_callback_info info) napi_value thisVar = nullptr; NAPI_CALL(env, napi_get_cb_info(env, info, &argc, args, &thisVar, nullptr)); if (argc < 1 || argc > 2 || !IsMatchArrayType(env, args[0])) { - HiLog::Error(LABEL, "%{public}s Invalid input.", __func__); + HiLog::Error(LABEL, "%{public}s Invalid input", __func__); return nullptr; } AsyncCallbackInfo *asyncCallbackInfo = new AsyncCallbackInfo { @@ -662,7 +668,7 @@ static napi_value GetGeomagneticDip(napi_env env, napi_callback_info info) return promise; } if (!IsMatchType(env, args[1], napi_function)) { - HiLog::Error(LABEL, "%{public}s argument should be function!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be function", __func__); delete asyncCallbackInfo; asyncCallbackInfo = nullptr; return nullptr; @@ -847,7 +853,7 @@ static napi_value GetSingleSensor(napi_env env, napi_callback_info info) return promise; } if (!IsMatchType(env, args[1], napi_function)) { - HiLog::Error(LABEL, "%{public}s argument should be napi_function type!", __func__); + HiLog::Error(LABEL, "%{public}s argument should be napi_function type", __func__); delete asyncCallbackInfo; asyncCallbackInfo = nullptr; return nullptr;