From 4ed9ada00ef7d6c76afb9b6b441f446349c8109d Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Fri, 26 Jul 2024 12:27:37 +0900 Subject: [PATCH] lottie/expressions: hotfix - fixed a memory leak. - corrected loopIn key value. --- src/loaders/lottie/tvgLottieExpressions.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/loaders/lottie/tvgLottieExpressions.cpp b/src/loaders/lottie/tvgLottieExpressions.cpp index 067117fc..6714b128 100644 --- a/src/loaders/lottie/tvgLottieExpressions.cpp +++ b/src/loaders/lottie/tvgLottieExpressions.cpp @@ -881,9 +881,7 @@ static jerry_value_t _loopIn(const jerry_call_info_t* info, const jerry_value_t if (!_loopInCommon(exp, args, argsCnt)) return jerry_undefined(); - if (argsCnt > 1) { - exp->loop.key = exp->comp->frameAtTime((float)jerry_value_as_int32(args[1])); - } + if (argsCnt > 1) exp->loop.key = jerry_value_as_int32(args[1]); auto obj = jerry_object(); jerry_object_set_native_ptr(obj, nullptr, exp->property); @@ -1192,7 +1190,10 @@ void LottieExpressions::buildGlobal(LottieExpression* exp) void LottieExpressions::buildComp(jerry_value_t context, float frameNo, LottieLayer* comp, LottieExpression* exp) { - jerry_object_set_native_ptr(context, &freeCb, _expcontent(exp, frameNo, comp)); + auto data = static_cast(jerry_object_get_native_ptr(context, &freeCb)); + data->exp = exp; + data->frameNo = frameNo; + data->obj = comp; //layer(index) / layer(name) / layer(otherLayer, reIndex) auto layer = jerry_function_external(_layer); @@ -1255,11 +1256,13 @@ jerry_value_t LottieExpressions::buildGlobal() //comp(name) comp = jerry_function_external(_comp); + jerry_object_set_native_ptr(comp, &freeCb, _expcontent(nullptr, 0.0f, nullptr)); jerry_object_set_sz(global, "comp", comp); //footage(name) thisComp = jerry_object(); + jerry_object_set_native_ptr(thisComp, &freeCb, _expcontent(nullptr, 0.0f, nullptr)); jerry_object_set_sz(global, "thisComp", thisComp); thisLayer = jerry_object();