From eeeea5ad7acb4006ad4f2f556665eba848279ecf Mon Sep 17 00:00:00 2001 From: Fabienne Semeria Date: Wed, 10 Jul 2013 16:36:08 +0200 Subject: qpa: Fix memory leak of QFontEngineBox object Delete QFontEngineBox object in QFontDatabase::load() if the object can not be used. cherry-picked from qt5/qtbase effbc9edc57fd8a2e40729a76004fe4f5fafcf49 original patch from jianliang79 Modified to match changes in QAtomicInt API. Change-Id: I1cf7398f582c918426a73973347efe4425100eec Reviewed-by: jian liang Reviewed-by: Konstantin Ritt Reviewed-by: Julien Brianceau Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontdatabase_qpa.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/gui/text') diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index dca45e4ae2..315f8f5fda 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -384,8 +384,12 @@ void QFontDatabase::load(const QFontPrivate *d, int script) req.family = *it; fe = QFontDatabase::findFont(script, d, req); - if (fe && (fe->type()==QFontEngine::Box) && !req.family.isEmpty()) + if (fe && (fe->type()==QFontEngine::Box) && !req.family.isEmpty()) { + if (fe->ref == 0) + delete fe; + fe = 0; + } } if (fe->symbol || (d->request.styleStrategy & QFont::NoFontMerging)) { -- cgit v1.2.3