summaryrefslogtreecommitdiff
path: root/src/libs
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2016-07-18 12:00:17 +0200
committerTobias Hunger <tobias.hunger@qt.io>2016-07-18 12:06:12 +0000
commitad2b968e4ca4f99750419bd929eb342b7e316faa (patch)
treeaf950d7ad63502efcc2b52aab877fd2d33e22c62 /src/libs
parent6f3bf106b50ddd13f18cdbaf15088ae65a0383ff (diff)
downloadqt-creator-ad2b968e4ca4f99750419bd929eb342b7e316faa.tar.gz
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>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/utils/shellcommand.cpp8
-rw-r--r--src/libs/utils/shellcommand.h4
2 files changed, 6 insertions, 6 deletions
diff --git a/src/libs/utils/shellcommand.cpp b/src/libs/utils/shellcommand.cpp
index 49b6134a11..59c7f97fd0 100644
--- a/src/libs/utils/shellcommand.cpp
+++ b/src/libs/utils/shellcommand.cpp
@@ -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)
diff --git a/src/libs/utils/shellcommand.h b/src/libs/utils/shellcommand.h
index 58527c4fe3..ce5957c40a 100644
--- a/src/libs/utils/shellcommand.h
+++ b/src/libs/utils/shellcommand.h
@@ -168,12 +168,12 @@ private:
// Run without a event loop in fully blocking mode. No signals will be delivered.
SynchronousProcessResponse runFullySynchronous(const FileName &binary, const QStringList &arguments,
- OutputProxy *proxy,
+ QSharedPointer<OutputProxy> proxy,
int timeoutS, const QString &workingDirectory,
const ExitCodeInterpreter &interpreter = defaultExitCodeInterpreter);
// Run with an event loop. Signals will be delivered.
SynchronousProcessResponse runSynchronous(const FileName &binary, const QStringList &arguments,
- OutputProxy *proxy,
+ QSharedPointer<OutputProxy> proxy,
int timeoutS, const QString &workingDirectory,
const ExitCodeInterpreter &interpreter = defaultExitCodeInterpreter);