From f00efd82334d16197ebe4f5a9c01f54ba8ba925e Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Mon, 31 May 2021 09:02:23 +0200 Subject: [PATCH] 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 (cherry picked from commit 4f730fc5f13b906d7bb2461f803ecedb4937c16d) Reviewed-by: Qt Cherry-pick Bot --- src/gui/text/unix/qfontconfigdatabase.cpp | 5 +++++ src/gui/text/unix/qfontconfigdatabase_p.h | 1 + 2 files changed, 6 insertions(+) diff --git a/src/gui/text/unix/qfontconfigdatabase.cpp b/src/gui/text/unix/qfontconfigdatabase.cpp index dff11eb1720..c9f3c3cb813 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 cce2bac1d32..856a11fde49 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;