tvg_saver: fix the memory leak.
authorHermet Park <chuneon.park@samsung.com>
Fri, 24 Sep 2021 02:58:48 +0000 (11:58 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 27 Sep 2021 02:21:45 +0000 (11:21 +0900)
src/savers/tvg/tvgTvgSaver.cpp

index 7d77998..e882bc2 100644 (file)
@@ -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