mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-09 14:13:43 +00:00
svg_loader: free allocated data properly.
also renamed internal function for consistency. createNode() cloneNode() freeSVGNode() ? Change-Id: Ie9b22e92d5e918e947f8476ad0d4682fc7a3be65
This commit is contained in:
parent
8abef404cf
commit
3b9bb51321
1 changed files with 7 additions and 5 deletions
|
@ -33,7 +33,7 @@
|
||||||
|
|
||||||
typedef SvgNode* (*FactoryMethod)(SvgLoaderData* loader, SvgNode* parent, const char* buf, unsigned bufLength);
|
typedef SvgNode* (*FactoryMethod)(SvgLoaderData* loader, SvgNode* parent, const char* buf, unsigned bufLength);
|
||||||
typedef SvgStyleGradient* (*GradientFactoryMethod)(SvgLoaderData* loader, const char* buf, unsigned bufLength);
|
typedef SvgStyleGradient* (*GradientFactoryMethod)(SvgLoaderData* loader, const char* buf, unsigned bufLength);
|
||||||
|
static void _freeNode(SvgNode* node);
|
||||||
|
|
||||||
static char* _skipSpace(const char* str, const char* end)
|
static char* _skipSpace(const char* str, const char* end)
|
||||||
{
|
{
|
||||||
|
@ -1459,6 +1459,8 @@ static void _cloneNode(SvgNode* from, SvgNode* parent)
|
||||||
for (vector<SvgNode*>::iterator itrChild = from->child.begin(); itrChild != from->child.end(); itrChild++) {
|
for (vector<SvgNode*>::iterator itrChild = from->child.begin(); itrChild != from->child.end(); itrChild++) {
|
||||||
_cloneNode(*itrChild, newNode);
|
_cloneNode(*itrChild, newNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_freeNode(newNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2161,12 +2163,12 @@ static void _freeNodeStyle(SvgStyleProperty* style)
|
||||||
free(style);
|
free(style);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _freeSvgNode(SvgNode* node)
|
static void _freeNode(SvgNode* node)
|
||||||
{
|
{
|
||||||
if (!node) return;
|
if (!node) return;
|
||||||
|
|
||||||
for(vector<SvgNode*>::iterator itrChild = node->child.begin(); itrChild != node->child.end(); itrChild++) {
|
for(vector<SvgNode*>::iterator itrChild = node->child.begin(); itrChild != node->child.end(); itrChild++) {
|
||||||
_freeSvgNode(*itrChild);
|
_freeNode(*itrChild);
|
||||||
}
|
}
|
||||||
node->child.clear();
|
node->child.clear();
|
||||||
|
|
||||||
|
@ -2187,7 +2189,7 @@ static void _freeSvgNode(SvgNode* node)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SvgNodeType::Doc: {
|
case SvgNodeType::Doc: {
|
||||||
_freeSvgNode(node->node.doc.defs);
|
_freeNode(node->node.doc.defs);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SvgNodeType::Defs: {
|
case SvgNodeType::Defs: {
|
||||||
|
@ -2360,7 +2362,7 @@ bool SvgLoader::close()
|
||||||
free(loaderData.svgParse);
|
free(loaderData.svgParse);
|
||||||
loaderData.svgParse = nullptr;
|
loaderData.svgParse = nullptr;
|
||||||
}
|
}
|
||||||
_freeSvgNode(loaderData.doc);
|
_freeNode(loaderData.doc);
|
||||||
loaderData.doc = nullptr;
|
loaderData.doc = nullptr;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue