diff --git a/src/loaders/lottie/tvgLottieParser.cpp b/src/loaders/lottie/tvgLottieParser.cpp index 6aa42731..2d9a32a1 100644 --- a/src/loaders/lottie/tvgLottieParser.cpp +++ b/src/loaders/lottie/tvgLottieParser.cpp @@ -950,8 +950,19 @@ void LottieParser::parseShapes(LottieLayer* layer) { enterArray(); while (nextArrayValue()) { - parseObject(layer); - } + enterObject(); + while (auto key = nextObjectKey()) { + if (!strcmp(key, "it")) { + enterArray(); + while (nextArrayValue()) parseObject(layer); + } else if (!strcmp(key, "ty")) { + if (auto child = parseObject()) { + if (child->hidden) delete(child); + else layer->children.push(child); + } + } else skip(key); + } + } }