summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qstatictext.cpp
diff options
context:
space:
mode:
authorKonstantin Ritt <ritt.ks@gmail.com>2014-11-21 10:35:13 +0400
committerKonstantin Ritt <ritt.ks@gmail.com>2014-11-25 22:18:02 +0100
commitd911f1dd429328f2046b416fe6190a859db80013 (patch)
tree435bba548c1a611015725a6aa0b60df774d1ae16 /src/gui/text/qstatictext.cpp
parente8ba85b94447d33216b09653cef0629eb1631d55 (diff)
[QStaticText] Fix potential font engine leaking
Never assume the engine is still cached but rather delete it if we are the last consumer. Change-Id: I4e3c796d45c53f42722a437482d71e2dae14cad2 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Diffstat (limited to 'src/gui/text/qstatictext.cpp')
-rw-r--r--src/gui/text/qstatictext.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index efced94397..a7868f36ab 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -722,14 +722,19 @@ QStaticTextItem::~QStaticTextItem()
{
if (m_userData != 0 && !m_userData->ref.deref())
delete m_userData;
- m_fontEngine->ref.deref();
+ setFontEngine(0);
}
void QStaticTextItem::setFontEngine(QFontEngine *fe)
{
- if (m_fontEngine != 0)
- m_fontEngine->ref.deref();
+ if (m_fontEngine == fe)
+ return;
+
+ if (m_fontEngine != 0 && !m_fontEngine->ref.deref())
+ delete m_fontEngine;
+
m_fontEngine = fe;
+
if (m_fontEngine != 0)
m_fontEngine->ref.ref();
}