diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2014-11-21 10:35:13 +0400 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2014-11-25 22:18:02 +0100 |
commit | d911f1dd429328f2046b416fe6190a859db80013 (patch) | |
tree | 435bba548c1a611015725a6aa0b60df774d1ae16 /src/gui/text/qstatictext.cpp | |
parent | e8ba85b94447d33216b09653cef0629eb1631d55 (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.cpp | 11 |
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(); } |