diff --git a/src/core/io/qsettings.cpp b/src/core/io/qsettings.cpp index 559bfe7ac..15ebe8069 100644 --- a/src/core/io/qsettings.cpp +++ b/src/core/io/qsettings.cpp @@ -286,13 +286,6 @@ void QSettingsPrivate::write() } QMutexLocker locker(qSettingsMutex()); - QFile writefile(filename); - if (Q_UNLIKELY(!writefile.open(QFile::WriteOnly))) { - status = QSettings::AccessError; - qWarning("QSettingsPrivate::write: failed to open %s", filename.toLocal8Bit().constData()); - return; - } - QSettings::SettingsMap mergemap; QFile readfile(filename); if (readfile.open(QFile::ReadOnly)) { @@ -302,6 +295,13 @@ void QSettingsPrivate::write() mergemap.insert(key, map.value(key)); } + QFile writefile(filename); + if (Q_UNLIKELY(!writefile.open(QFile::WriteOnly))) { + status = QSettings::AccessError; + qWarning("QSettingsPrivate::write: failed to open %s", filename.toLocal8Bit().constData()); + return; + } + if (Q_UNLIKELY(!writeFunc(writefile, mergemap))) { status = QSettings::FormatError; qWarning("QSettingsPrivate::write: could not write %s", filename.toLocal8Bit().constData());