From f1cd65a876cb788338ecd4a4e122006bbe53799c Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Fri, 1 Nov 2024 12:26:42 +0900 Subject: [PATCH] lottie: corrected a shallow keyframe data copy bug The previous assignment operator was missed due to a template error, which has now been corrected. issue: https://github.com/thorvg/thorvg/issues/2797 --- src/loaders/lottie/tvgLottieLoader.cpp | 1 + src/loaders/lottie/tvgLottieParser.cpp | 2 +- src/loaders/lottie/tvgLottieProperty.h | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/loaders/lottie/tvgLottieLoader.cpp b/src/loaders/lottie/tvgLottieLoader.cpp index 825205be..81e72e34 100644 --- a/src/loaders/lottie/tvgLottieLoader.cpp +++ b/src/loaders/lottie/tvgLottieLoader.cpp @@ -300,6 +300,7 @@ bool LottieLoader::override(const char* slot) //parsing slot json LottieParser parser(temp, dirName); + parser.comp = comp; auto idx = 0; while (auto sid = parser.sid(idx == 0)) { diff --git a/src/loaders/lottie/tvgLottieParser.cpp b/src/loaders/lottie/tvgLottieParser.cpp index 51914f10..5d71d083 100644 --- a/src/loaders/lottie/tvgLottieParser.cpp +++ b/src/loaders/lottie/tvgLottieParser.cpp @@ -1444,7 +1444,7 @@ bool LottieParser::apply(LottieSlot* slot) case LottieProperty::Type::Color: { obj = new LottieSolid; context.parent = obj; - parseSlotProperty(static_cast(obj)->color); + parseSlotProperty(static_cast(obj)->color); break; } case LottieProperty::Type::TextDoc: { diff --git a/src/loaders/lottie/tvgLottieProperty.h b/src/loaders/lottie/tvgLottieProperty.h index b5c11461..244d630a 100644 --- a/src/loaders/lottie/tvgLottieProperty.h +++ b/src/loaders/lottie/tvgLottieProperty.h @@ -329,12 +329,12 @@ struct LottieGenericProperty : LottieProperty return operator()(frameNo); } - T& operator=(const T& other) + LottieGenericProperty& operator=(const LottieGenericProperty& other) { //shallow copy, used for slot overriding if (other.frames) { frames = other.frames; - const_cast(other).frames = nullptr; + const_cast&>(other).frames = nullptr; } else value = other.value; return *this; }