From 557de3eb40cdf893a8cda0e8b34e45af44c90cf6 Mon Sep 17 00:00:00 2001 From: Jinny You Date: Mon, 15 Apr 2024 22:21:26 +0900 Subject: [PATCH] lottie/loader: Fix crash when parsing error When parsing error, lottie loader raises runtime crash. Check whether the composition is nullptr. --- src/loaders/lottie/tvgLottieLoader.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/loaders/lottie/tvgLottieLoader.cpp b/src/loaders/lottie/tvgLottieLoader.cpp index 2cd0b2c0..5867ddfc 100644 --- a/src/loaders/lottie/tvgLottieLoader.cpp +++ b/src/loaders/lottie/tvgLottieLoader.cpp @@ -350,6 +350,7 @@ float LottieLoader::duration() if (segmentBegin == 0.0f && segmentEnd == 1.0f) return frameDuration; if (!comp) done(); + if (!comp) return 0.0f; auto frameNo = frameCnt * (segmentEnd - segmentBegin); return frameNo / comp->frameRate; @@ -365,6 +366,7 @@ void LottieLoader::sync() uint32_t LottieLoader::markersCnt() { if (!comp) done(); + if (!comp) return 0; return comp->markers.count; } @@ -372,7 +374,7 @@ uint32_t LottieLoader::markersCnt() const char* LottieLoader::markers(uint32_t index) { if (!comp) done(); - if (index < 0 || index >= markersCnt()) return nullptr; + if (!comp || index < 0 || index >= markersCnt()) return nullptr; auto marker = comp->markers.begin() + index; return (*marker)->name; } @@ -381,6 +383,7 @@ const char* LottieLoader::markers(uint32_t index) bool LottieLoader::segment(const char* marker, float& begin, float& end) { if (!comp) done(); + if (!comp) return false; for (auto m = comp->markers.begin(); m < comp->markers.end(); ++m) { if (!strcmp(marker, (*m)->name)) {