svg_loader: fixing grad overwritting

Gradient was mistakenly overwritten in
files in which the <def> section existed,
but grad was defined outside it.
This commit is contained in:
Mira Grudzinska 2023-04-25 01:30:11 +02:00 committed by Hermet Park
parent 92dbc8507e
commit 83ffe9f612

View file

@ -3265,18 +3265,24 @@ static void _updateGradient(SvgLoaderData* loader, SvgNode* node, Array<SvgStyle
} }
} else { } else {
if (node->style->fill.paint.url) { if (node->style->fill.paint.url) {
if (node->style->fill.paint.gradient) { auto newGrad = _gradientDup(loader, gradients, node->style->fill.paint.url);
node->style->fill.paint.gradient->clear(); if (newGrad) {
free(node->style->fill.paint.gradient); if (node->style->fill.paint.gradient) {
node->style->fill.paint.gradient->clear();
free(node->style->fill.paint.gradient);
}
node->style->fill.paint.gradient = newGrad;
} }
node->style->fill.paint.gradient = _gradientDup(loader, gradients, node->style->fill.paint.url);
} }
if (node->style->stroke.paint.url) { if (node->style->stroke.paint.url) {
if (node->style->stroke.paint.gradient) { auto newGrad = _gradientDup(loader, gradients, node->style->stroke.paint.url);
node->style->stroke.paint.gradient->clear(); if (newGrad) {
free(node->style->stroke.paint.gradient); if (node->style->stroke.paint.gradient) {
node->style->stroke.paint.gradient->clear();
free(node->style->stroke.paint.gradient);
}
node->style->stroke.paint.gradient = newGrad;
} }
node->style->stroke.paint.gradient = _gradientDup(loader, gradients, node->style->stroke.paint.url);
} }
} }
} }