summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>2021-05-31 09:02:23 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-30 20:28:13 +0000
commitf00efd82334d16197ebe4f5a9c01f54ba8ba925e (patch)
treeb15bf0b5e655c86340ae800156db2f440ce06431 /src
parentf63f4b3e62ed8734c174917da45771c2cf070313 (diff)
fc: Clean up current config on shutdown
The FontConfig database had a static leak because we never dereferenced the current config. To make address sanitizer output less noisy, we clean this up on shutdown. From FcConfigDestroy docs: "Note that calling this function with the return from FcConfigGetCurrent will cause a new configuration to be created for use as current configuration." So this should be safe even if application execution continues after Qt shutdown, but it could trigger creation of a new current config in that case, if FontConfig calls are made. Fixes: QTBUG-92477 Change-Id: I596055a84edc1a1b06157e2adf6c8627c6802db1 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 4f730fc5f13b906d7bb2461f803ecedb4937c16d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/gui/text/unix/qfontconfigdatabase.cpp5
-rw-r--r--src/gui/text/unix/qfontconfigdatabase_p.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp
index dff11eb172..c9f3c3cb81 100644
--- a/src/gui/text/unix/qfontconfigdatabase.cpp
+++ b/src/gui/text/unix/qfontconfigdatabase.cpp
@@ -557,6 +557,11 @@ static void populateFromPattern(FcPattern *pattern, QFontDatabasePrivate::Applic
}
+QFontconfigDatabase::~QFontconfigDatabase()
+{
+ FcConfigDestroy(FcConfigGetCurrent());
+}
+
void QFontconfigDatabase::populateFontDatabase()
{
FcInit();
diff --git a/src/gui/text/unix/qfontconfigdatabase_p.h b/src/gui/text/unix/qfontconfigdatabase_p.h
index cce2bac1d3..856a11fde4 100644
--- a/src/gui/text/unix/qfontconfigdatabase_p.h
+++ b/src/gui/text/unix/qfontconfigdatabase_p.h
@@ -61,6 +61,7 @@ class QFontEngineFT;
class Q_GUI_EXPORT QFontconfigDatabase : public QFreeTypeFontDatabase
{
public:
+ ~QFontconfigDatabase() override;
void populateFontDatabase() override;
void invalidate() override;
QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) override;