summaryrefslogtreecommitdiff
path: root/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c')
-rw-r--r--src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c18
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)))