From a309c26f1bb76fc1a55faf109d18289e96a2fffa Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Wed, 25 Jan 2012 16:26:47 +0100 Subject: [PATCH] VCS: Never try to run empty binaries Never try to run empty binaries. Task-number: QTCREATORBUG-6849 Change-Id: I591fdb9d39394fc8097908f5934a1a96518859cb Reviewed-by: Hugues Delorme <delorme.hugues@fougsys.fr> --- src/plugins/git/gitclient.cpp | 3 +++ src/plugins/vcsbase/vcsbaseplugin.cpp | 19 ++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp index c8062134dad..9b045178bd2 100644 --- a/src/plugins/git/gitclient.cpp +++ b/src/plugins/git/gitclient.cpp @@ -2329,6 +2329,9 @@ QString GitClient::gitVersionString(bool silent, QString *errorMessage) const // determine version as '(major << 16) + (minor << 8) + patch' or 0. unsigned GitClient::synchronousGitVersion(bool silent, QString *errorMessage) const { + if (gitBinaryPath().isEmpty()) + return 0; + // run git --version QByteArray outputText; QByteArray errorText; diff --git a/src/plugins/vcsbase/vcsbaseplugin.cpp b/src/plugins/vcsbase/vcsbaseplugin.cpp index 7af504a7f0f..4d137dec8d9 100644 --- a/src/plugins/vcsbase/vcsbaseplugin.cpp +++ b/src/plugins/vcsbase/vcsbaseplugin.cpp @@ -793,6 +793,12 @@ static SynchronousProcessResponse runVcsFullySynchronously(const QString &workin unsigned flags, QTextCodec *outputCodec = 0) { + SynchronousProcessResponse response; + if (binary.isEmpty()) { + response.result = SynchronousProcessResponse::StartFailed; + return response; + } + VcsBase::VcsBaseOutputWindow *outputWindow = VcsBase::VcsBaseOutputWindow::instance(); // Set up process @@ -809,7 +815,6 @@ static SynchronousProcessResponse runVcsFullySynchronously(const QString &workin // Start process->start(binary, arguments, QIODevice::ReadOnly); process->closeWriteChannel(); - SynchronousProcessResponse response; if (!process->waitForStarted()) { response.result = SynchronousProcessResponse::StartFailed; return response; @@ -869,6 +874,13 @@ SynchronousProcessResponse VcsBasePlugin::runVcs(const QString &workingDir, unsigned flags, QTextCodec *outputCodec) { + SynchronousProcessResponse response; + + if (binary.isEmpty()) { + response.result = SynchronousProcessResponse::StartFailed; + return response; + } + VcsBase::VcsBaseOutputWindow *outputWindow = VcsBase::VcsBaseOutputWindow::instance(); if (!(flags & SuppressCommandLogging)) @@ -901,8 +913,6 @@ SynchronousProcessResponse VcsBasePlugin::runVcs(const QString &workingDir, VcsBase::VcsBasePlugin::setProcessEnvironment(&env, (flags & ForceCLocale)); - SynchronousProcessResponse response; - if (flags & FullySynchronously) { response = runVcsFullySynchronously(workingDir, binary, arguments, timeOutMS, env, flags, outputCodec); @@ -964,6 +974,9 @@ bool VcsBasePlugin::runFullySynchronous(const QString &workingDirectory, int timeoutMS, bool logCommandToWindow) { + if (binary.isEmpty()) + return false; + VcsBase::VcsBaseOutputWindow *outputWindow = VcsBase::VcsBaseOutputWindow::instance(); if (logCommandToWindow) -- GitLab