diff options
author | Slávek Banko <slavek.banko@axis.cz> | 2022-03-10 02:49:33 +0100 |
---|---|---|
committer | Slávek Banko <slavek.banko@axis.cz> | 2022-03-10 02:49:33 +0100 |
commit | 2fcbb8f256f515bec9b5db93743f281b00aba827 (patch) | |
tree | acbae9976f0f98c9701aad819c7cac3a0855ad4d | |
parent | 003976f81b99deaae413bb04f823ca1e5419929d (diff) | |
download | tdelibs-2fcbb8f256f515bec9b5db93743f281b00aba827.tar.gz tdelibs-2fcbb8f256f515bec9b5db93743f281b00aba827.zip |
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>
-rw-r--r-- | tdecore/svgicons/ksvgiconengine.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/tdecore/svgicons/ksvgiconengine.cpp b/tdecore/svgicons/ksvgiconengine.cpp index 1a3004506..97e60fcb7 100644 --- a/tdecore/svgicons/ksvgiconengine.cpp +++ b/tdecore/svgicons/ksvgiconengine.cpp @@ -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)); |