svgicons: Create initial icon painter before size detection.

This resolve the potential crash during size detection.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
feat/tdehtml+svg
Slávek Banko 2 years ago
parent 003976f81b
commit 2fcbb8f256
Signed by: SlavekB
GPG Key ID: 608F5293A04BE668

@ -595,6 +595,10 @@ bool KSVGIconEngine::load(int width, int height, const TQString &path)
// Detect width and height
TQDomElement rootElement = rootNode.toElement();
bool recreatePainter = false;
// Create initial icon painter
d->painter = new KSVGIconPainter(width, height);
d->width = width; // this sets default for no width -> 100% case
if(rootElement.hasAttribute("width"))
@ -604,6 +608,7 @@ bool KSVGIconEngine::load(int width, int height, const TQString &path)
if(!width) // no width set, use default
{
width = d->width;
recreatePainter = true;
}
}
@ -615,13 +620,16 @@ bool KSVGIconEngine::load(int width, int height, const TQString &path)
if(!height) // no height set, use default
{
height = d->height;
recreatePainter = true;
}
}
// Create icon painter
d->painter = new KSVGIconPainter(width, height);
// Create icon painter
// Create final icon painter
if(recreatePainter)
{
delete d->painter;
d->painter = new KSVGIconPainter(width, height);
}
d->painter->setDrawWidth(static_cast<int>(d->width));
d->painter->setDrawHeight(static_cast<int>(d->height));

Loading…
Cancel
Save