* svg_loader: allow multiple defs without data and memory leak
If the svg file contained multiple <defs> tags, each subsequent tag
overwritten the previous tag. This resulted in incorrect rendering of the
file and memory leaks.
@Issues: 491
* svg_loader: allow multiple defs without data and memory leak- fix #1
Changed the idea to abandon node creating instead of deleting it after
creation. Removed simpleXmlParseAttributes for _createDefsNode.
Change-Id: Iada1c467949228e116a637c8fd37ceabb5dc34bb
static SvgNode* _createDefsNode(TVG_UNUSED SvgLoaderData* loader, TVG_UNUSED SvgNode* parent, const char* buf, unsigned bufLength)
{
+ if (loader->def && loader->doc->node.doc.defs) return nullptr;
SvgNode* node = _createNode(nullptr, SvgNodeType::Defs);
- if (!node) return nullptr;
- simpleXmlParseAttributes(buf, bufLength, nullptr, node);
return node;
}
node = method(loader, parent, attrs, attrsLength);
}
+ if (!node) return;
if (node->type == SvgNodeType::Defs) {
loader->doc->node.doc.defs = node;
loader->def = node;