diff options
author | JunsuChoi <jsuya.choi@samsung.com> | 2020-09-02 18:34:59 +0900 |
---|---|---|
committer | Hermet Park <chuneon.park@samsung.com> | 2020-09-02 18:34:59 +0900 |
commit | 40b6e44947740133df20d97ca3ed65268037af20 (patch) | |
tree | 39c2a83603b0b96c65b89994a4db2746c2051326 | |
parent | af8bf56c98f2d405a588c5e9561ab05bfa832ef0 (diff) | |
download | efl-40b6e44947740133df20d97ca3ed65268037af20.tar.gz |
SvgLoader: Defs type nodes are not saved in loader's node list.
Summary:
If there is an empty (unused) <defs /> inside the svg file, this can cause problems.
<defs> node is managed separately in loader->def.
So it doesn't have to be added to loader's list.
Test Plan: N/A
Reviewers: Hermet, smohanty
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers, kimcinoo, herb
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12127
-rw-r--r-- | src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c | 18 |
1 files changed, 12 insertions, 6 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 cefdc3304f..38d6d50513 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 @@ -2160,17 +2160,23 @@ _evas_svg_loader_xml_open_parser(Evas_SVG_Loader *loader, parent = eina_array_data_get(loader->stack, eina_array_count(loader->stack) - 1); node = method(loader, parent, attrs, attrs_length); } - eina_array_push(loader->stack, node); if (node->type == SVG_NODE_DEFS) - { - loader->doc->node.doc.defs = node; - loader->def = node; - } + { + loader->doc->node.doc.defs = node; + loader->def = node; + } + else + { + eina_array_push(loader->stack, node); + } } else if ((method = _find_graphics_factory(tag_name))) { - parent = eina_array_data_get(loader->stack, eina_array_count(loader->stack) - 1); + if (eina_array_count(loader->stack) > 0) + parent = eina_array_data_get(loader->stack, eina_array_count(loader->stack) - 1); + else + parent = loader->doc; node = method(loader, parent, attrs, attrs_length); } else if ((gradient_method = _find_gradient_factory(tag_name))) |