From 3ee6883f16d383995c587acccb4a52471b65b43d Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Fri, 24 Sep 2021 11:58:48 +0900 Subject: [PATCH] tvg_saver: fix the memory leak. --- src/savers/tvg/tvgTvgSaver.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/savers/tvg/tvgTvgSaver.cpp b/src/savers/tvg/tvgTvgSaver.cpp index 7d779980..e882bc29 100644 --- a/src/savers/tvg/tvgTvgSaver.cpp +++ b/src/savers/tvg/tvgTvgSaver.cpp @@ -366,7 +366,10 @@ TvgBinCounter TvgSaver::serializeChild(const Paint* parent, const Paint* child, TvgBinCounter TvgSaver::serializeScene(const Scene* scene, const Matrix* pTransform, const Matrix* cTransform) { auto it = this->iterator(scene); - if (it->count() == 0) return 0; + if (it->count() == 0) { + delete(it); + return 0; + } //Case - Only Child: Skip saving this scene. if (it->count() == 1) { @@ -381,7 +384,9 @@ TvgBinCounter TvgSaver::serializeScene(const Scene* scene, const Matrix* pTransf //Case - Delegator Scene: This scene is just a delegator, we can skip this: if (scene->composite(nullptr) == CompositeMethod::None && scene->opacity() == 255) { - return serializeChildren(it, cTransform, false); + auto ret = serializeChildren(it, cTransform, false); + delete(it); + return ret; } //Case - Serialize Scene & its children