hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=161e411d183f0b2d5c19a3a99b5e91e2246f5541

commit 161e411d183f0b2d5c19a3a99b5e91e2246f5541
Author: Subhransu Mohanty <smohan...@gmail.com>
Date:   Mon Jun 1 18:53:36 2020 +0900

    svg/loader: Fix memory leak
    
    Reviewers: Hermet
    
    Reviewed By: Hermet
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D11908
---
 src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c | 5 ++++-
 src/static_libs/vg_common/vg_common_svg.c          | 6 ++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c 
b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
index 313d3eed15..9151e05c15 100644
--- a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
+++ b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
@@ -2410,6 +2410,7 @@ static Eina_Bool
 evas_vg_load_file_close_svg(Vg_File_Data *vfd)
 {
    if (vfd->root) efl_unref(vfd->root);
+   free(vfd);
    return EINA_TRUE;
 }
 
@@ -2462,7 +2463,9 @@ evas_vg_load_file_open_svg(Eina_File *file,
      }
    free(loader.svg_parse);
 
-   return vg_common_svg_create_vg_node(loader.doc);
+   Vg_File_Data* result = vg_common_svg_create_vg_node(loader.doc);
+   vg_common_svg_node_free(loader.doc);
+   return result;
 }
 
 static Evas_Vg_Load_Func evas_vg_load_svg_func =
diff --git a/src/static_libs/vg_common/vg_common_svg.c 
b/src/static_libs/vg_common/vg_common_svg.c
index de5477bb0e..058cdf99e0 100644
--- a/src/static_libs/vg_common/vg_common_svg.c
+++ b/src/static_libs/vg_common/vg_common_svg.c
@@ -536,12 +536,14 @@ vg_common_svg_node_free(Svg_Node *node)
              {
                 _svg_style_gradient_free(grad);
              }
+        case SVG_NODE_CUSTOME_COMMAND:
+           if (node->node.command.commands) free(node->node.command.commands);
+           if (node->node.command.points) free(node->node.command.points);     
    
            break;
         default:
            break;
      }
-   if (node->node.command.commands_count > 0) 
free(node->node.command.commands);
-   if (node->node.command.points_count > 0) free(node->node.command.points);
+
    free(node);
 }
 

-- 


Reply via email to