diff options
author | Eike Ziller <eike.ziller@theqtcompany.com> | 2016-02-16 13:11:06 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@theqtcompany.com> | 2016-02-17 08:47:46 +0000 |
commit | 1eac1e60a28fd6de36cf4115a1d3573af4143341 (patch) | |
tree | 0e30e3e5aa45fa1c30b1f2461037c7038f26f4c6 /src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp | |
parent | b01906b799df5dd83302e254afe5266a56aab2cb (diff) |
Astyle: Fix concurrency issue with updating version
We may not access command() from a different thread, since it is not
thread safe.
We can also report the result just through the function return value.
Change-Id: Ib20c062f6541400040868b65308d9b2d2bd382d8
Reviewed-by: David Schulz <david.schulz@theqtcompany.com>
Diffstat (limited to 'src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp')
-rw-r--r-- | src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp b/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp index 83de996bd0..e95a0f96ec 100644 --- a/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp +++ b/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp @@ -65,15 +65,6 @@ ArtisticStyleSettings::ArtisticStyleSettings() : read(); } -void ArtisticStyleSettings::updateVersion() -{ - if (m_versionFuture.isRunning()) - m_versionFuture.cancel(); - - m_versionFuture = Utils::runAsync(&ArtisticStyleSettings::helperUpdateVersion, this); - m_versionWatcher.setFuture(m_versionFuture); -} - static int parseVersion(const QString &text) { // The version in Artistic Style is printed like "Artistic Style Version 2.04" @@ -86,22 +77,29 @@ static int parseVersion(const QString &text) return 0; } -void ArtisticStyleSettings::helperUpdateVersion(QFutureInterface<int> &future) +static int updateVersionHelper(const QString &command) { QProcess process; - process.start(command(), QStringList() << QLatin1String("--version")); + process.start(command, QStringList() << QLatin1String("--version")); if (!process.waitForFinished()) { process.kill(); - future.reportResult(0); - return; + return 0; } // Astyle prints the version on stdout or stderr, depending on platform const int version = parseVersion(QString::fromUtf8(process.readAllStandardOutput()).trimmed()); if (version != 0) - future.reportResult(version); - else - future.reportResult(parseVersion(QString::fromUtf8(process.readAllStandardError()).trimmed())); + return version; + return parseVersion(QString::fromUtf8(process.readAllStandardError()).trimmed()); +} + +void ArtisticStyleSettings::updateVersion() +{ + if (m_versionFuture.isRunning()) + m_versionFuture.cancel(); + + m_versionFuture = Utils::runAsync(updateVersionHelper, command()); + m_versionWatcher.setFuture(m_versionFuture); } void ArtisticStyleSettings::helperSetVersion() |