diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2016-07-18 12:00:17 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2016-07-18 12:06:12 +0000 |
commit | ad2b968e4ca4f99750419bd929eb342b7e316faa (patch) | |
tree | af950d7ad63502efcc2b52aab877fd2d33e22c62 /src/libs | |
parent | 6f3bf106b50ddd13f18cdbaf15088ae65a0383ff (diff) | |
download | qt-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.cpp | 8 | ||||
-rw-r--r-- | src/libs/utils/shellcommand.h | 4 |
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); |