summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubhransu Mohanty <smohantty@gmail.com>2020-06-01 18:53:36 +0900
committerHermet Park <chuneon.park@samsung.com>2020-06-01 18:53:36 +0900
commit161e411d183f0b2d5c19a3a99b5e91e2246f5541 (patch)
tree704051c1f2a6530ad3f32de9891ce6bd280c1335
parentb981667d52b721fcde217abd8497ef2feba65690 (diff)
downloadefl-161e411d183f0b2d5c19a3a99b5e91e2246f5541.tar.gz
svg/loader: Fix memory leak
Reviewers: Hermet Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11908
-rw-r--r--src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c5
-rw-r--r--src/static_libs/vg_common/vg_common_svg.c6
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);
}