hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=40b6e44947740133df20d97ca3ed65268037af20

commit 40b6e44947740133df20d97ca3ed65268037af20
Author: JunsuChoi <jsuya.c...@samsung.com>
Date:   Wed Sep 2 18:34:59 2020 +0900

    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
---
 src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c | 18 ++++++++++++------
 1 file 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)))

-- 


Reply via email to