ShellCommand: Fix crash with OutputProxy use

Pass a shared pointer into runSynchronous and runFullySynchronous.
That way the proxy will stay around for as long as needed.

Task-number: QTCREATORBUG-16612
Change-Id: Ic529440c81d85149abd67e5eeb564cc5f12181ab
Reviewed-by: Tim Jenssen <tim.jenssen@theqtcompany.com>
This commit is contained in:
Tobias Hunger
2016-07-18 12:00:17 +02:00
parent 6f3bf106b5
commit ad2b968e4c
2 changed files with 6 additions and 6 deletions

View File

@@ -328,9 +328,9 @@ Utils::SynchronousProcessResponse ShellCommand::runCommand(const Utils::FileName
proxy->appendCommand(dir, binary, arguments);
if (d->m_flags & FullySynchronously || QThread::currentThread() == QCoreApplication::instance()->thread())
response = runFullySynchronous(binary, arguments, proxy.data(), timeoutS, dir, interpreter);
response = runFullySynchronous(binary, arguments, proxy, timeoutS, dir, interpreter);
else
response = runSynchronous(binary, arguments, proxy.data(), timeoutS, dir, interpreter);
response = runSynchronous(binary, arguments, proxy, timeoutS, dir, interpreter);
if (!d->m_aborted) {
// Success/Fail message in appropriate window?
@@ -347,7 +347,7 @@ Utils::SynchronousProcessResponse ShellCommand::runCommand(const Utils::FileName
Utils::SynchronousProcessResponse ShellCommand::runFullySynchronous(const Utils::FileName &binary,
const QStringList &arguments,
OutputProxy *proxy,
QSharedPointer<OutputProxy> proxy,
int timeoutS,
const QString &workingDirectory,
const ExitCodeInterpreter &interpreter)
@@ -387,7 +387,7 @@ Utils::SynchronousProcessResponse ShellCommand::runFullySynchronous(const Utils:
SynchronousProcessResponse ShellCommand::runSynchronous(const FileName &binary,
const QStringList &arguments,
OutputProxy *proxy,
QSharedPointer<OutputProxy> proxy,
int timeoutS,
const QString &workingDirectory,
const ExitCodeInterpreter &interpreter)