summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-05-11 11:39:54 +0300
committerArttu Tarkiainen <arttu.tarkiainen@qt.io>2022-05-17 06:42:39 +0000
commitc37cc0616430f6dfd5ba72430a9ae9e539e2598d (patch)
tree5f71cbec70b642333e757f31b4d2f91e49b9e9f1 /src/libs/installer
parentd0d848e8849a25b4599e9a7b01093721e1b1a366 (diff)
Workaround QSettings / QDateTime incompatibility with Qt 6 applications
This causes problems when installers created with IFW share config files with Qt 6 applications. If the config file contains keys with QDateTime values written by the other application, the installer and maintenance tool will segfault when attempting to sync the file, even if we do not overwrite the values. This is fixed to recent Qt 5 and 6 versions with the submitted patches to QTBUG-102334. But as this requires updating the baseline Qt version for both the Qt IFW and the Qt 6 application, apply the workaround suggested in the issue comments, to avoid the crash in meantime. Task-number: QTIFW-2610 Change-Id: I968e293324775dc650315e223f549a81657a27a3 Reviewed-by: Katja Marttila <katja.marttila@qt.io>
Diffstat (limited to 'src/libs/installer')
-rw-r--r--src/libs/installer/permissionsettings.cpp26
-rw-r--r--src/libs/installer/permissionsettings.h14
2 files changed, 30 insertions, 10 deletions
diff --git a/src/libs/installer/permissionsettings.cpp b/src/libs/installer/permissionsettings.cpp
index 6d5abdfe6..235c6667b 100644
--- a/src/libs/installer/permissionsettings.cpp
+++ b/src/libs/installer/permissionsettings.cpp
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,6 +37,30 @@ using namespace QInstaller;
\internal
*/
+PermissionSettings::PermissionSettings(const QString &organization, const QString &application, QObject *parent)
+ : QSettings(organization, application, parent)
+{
+ setIniCodec("UTF-8"); // to workaround QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(Scope scope, const QString &organization, const QString &application, QObject *parent)
+ : QSettings(scope, organization, application, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(Format format, Scope scope, const QString &organization, const QString &application, QObject *parent)
+ : QSettings(format, scope, organization, application, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
+PermissionSettings::PermissionSettings(const QString &fileName, Format format, QObject *parent)
+ : QSettings(fileName, format, parent)
+{
+ setIniCodec("UTF-8"); // QTBUG-102334
+}
+
PermissionSettings::~PermissionSettings()
{
if (!fileName().isEmpty()) {
diff --git a/src/libs/installer/permissionsettings.h b/src/libs/installer/permissionsettings.h
index 3847c91db..2621624c2 100644
--- a/src/libs/installer/permissionsettings.h
+++ b/src/libs/installer/permissionsettings.h
@@ -1,6 +1,6 @@
/**************************************************************************
**
-** Copyright (C) 2017 The Qt Company Ltd.
+** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Qt Installer Framework.
@@ -37,16 +37,12 @@ class PermissionSettings : public QSettings
{
public:
explicit PermissionSettings(const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(organization, application, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
PermissionSettings(Scope scope, const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(scope, organization, application, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
PermissionSettings(Format format, Scope scope, const QString &organization,
- const QString &application = QString(), QObject *parent = 0)
- : QSettings(format, scope, organization, application, parent) {}
- PermissionSettings(const QString &fileName, Format format, QObject *parent = 0)
- : QSettings(fileName, format, parent) {}
+ const QString &application = QString(), QObject *parent = 0);
+ PermissionSettings(const QString &fileName, Format format, QObject *parent = 0);
~PermissionSettings();
};