diff --git a/frameworks/js/ani/vibrator/src/vibrator_ani.cpp b/frameworks/js/ani/vibrator/src/vibrator_ani.cpp index a7da7383b264886bbe91afbd22393f9e1e8d53e7..5ec7ef43ea41d95abd1d67f7167d0074dc8e9492 100644 --- a/frameworks/js/ani/vibrator/src/vibrator_ani.cpp +++ b/frameworks/js/ani/vibrator/src/vibrator_ani.cpp @@ -765,13 +765,25 @@ static void StartVibrationSync([[maybe_unused]] ani_env *env, ani_object effect, VibrateInfo vibrateInfo; if (!ParseEffectTypeAndParameters(env, effect, vibrateInfo)) { + if (vibrateInfo.vibratorPattern.events != nullptr) { + free(vibrateInfo.vibratorPattern.events); + vibrateInfo.vibratorPattern.events = nullptr; + } return; } if (!ParserParamFromVibrateAttribute(env, attribute, vibrateInfo)) { + if (vibrateInfo.vibratorPattern.events != nullptr) { + free(vibrateInfo.vibratorPattern.events); + vibrateInfo.vibratorPattern.events = nullptr; + } ThrowBusinessError(env, PARAMETER_ERROR, "ParserParamFromVibrateAttribute failed!"); return; } StartVibrate(vibrateInfo); + if (vibrateInfo.vibratorPattern.events != nullptr) { + free(vibrateInfo.vibratorPattern.events); + vibrateInfo.vibratorPattern.events = nullptr; + } } static bool IsSupportEffectInterally([[maybe_unused]] ani_env *env, ani_string effectId)