diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2021-05-31 09:02:23 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-30 20:28:13 +0000 |
commit | f00efd82334d16197ebe4f5a9c01f54ba8ba925e (patch) | |
tree | b15bf0b5e655c86340ae800156db2f440ce06431 /src | |
parent | f63f4b3e62ed8734c174917da45771c2cf070313 (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.cpp | 5 | ||||
-rw-r--r-- | src/gui/text/unix/qfontconfigdatabase_p.h | 1 |
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; |