From a82ca6adb2c24bda2f85525bfe65e095df296bfa Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Fri, 7 May 2021 15:38:58 +0800 Subject: [PATCH] Fix potential data race This case could be considered benign however it could still be an undefined behavior to the compiler, so remove it. Ref: https://hacks.mozilla.org/2021/04/eliminating-data-races-in-firefox-a-technical-report/ --- src/base/settingsstorage.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/base/settingsstorage.cpp b/src/base/settingsstorage.cpp index 37eabc625..73acdb98a 100644 --- a/src/base/settingsstorage.cpp +++ b/src/base/settingsstorage.cpp @@ -184,9 +184,8 @@ SettingsStorage *SettingsStorage::instance() bool SettingsStorage::save() { - if (!m_dirty) return true; // Obtaining the lock is expensive, let's check early - const QWriteLocker locker(&m_lock); // to guard for `m_dirty` - if (!m_dirty) return true; // something might have changed while we were getting the lock + const QWriteLocker locker(&m_lock); // guard for `m_dirty` too + if (!m_dirty) return true; const TransactionalSettings settings(QLatin1String("qBittorrent")); if (!settings.write(m_data))