aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@theqtcompany.com>2016-02-16 13:11:06 +0100
committerEike Ziller <eike.ziller@theqtcompany.com>2016-02-17 08:47:46 +0000
commit1eac1e60a28fd6de36cf4115a1d3573af4143341 (patch)
tree0e30e3e5aa45fa1c30b1f2461037c7038f26f4c6 /src/plugins/beautifier/artisticstyle/artisticstylesettings.cpp
parentb01906b799df5dd83302e254afe5266a56aab2cb (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.cpp30
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()