forked from qt-creator/qt-creator
Prevent passing invalid working directories in some places
QProcess fails silently when given an invalid working directory, so don't allow that to happen. Fixes: QTCREATORBUG-32841 Change-Id: Id3309054569625a6224e9452d3b2164836cf5160 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -377,12 +377,17 @@ public:
|
||||
penv = Environment::systemEnvironment().toProcessEnvironment();
|
||||
const QStringList senv = penv.toStringList();
|
||||
|
||||
FilePath workingDir = m_setup.m_workingDirectory;
|
||||
if (!workingDir.isDir())
|
||||
workingDir = workingDir.parentDir();
|
||||
if (!QTC_GUARD(workingDir.exists()))
|
||||
workingDir = workingDir.withNewPath({});
|
||||
bool startResult = m_ptyProcess->startProcess(executable,
|
||||
HostOsInfo::isWindowsHost()
|
||||
? QStringList{m_setup.m_nativeArguments}
|
||||
<< arguments
|
||||
: arguments,
|
||||
m_setup.m_workingDirectory.nativePath(),
|
||||
workingDir.nativePath(),
|
||||
senv,
|
||||
m_setup.m_ptyData->size().width(),
|
||||
m_setup.m_ptyData->size().height());
|
||||
|
@@ -66,7 +66,11 @@ DesktopDevice::DesktopDevice()
|
||||
process.setTerminalMode(TerminalMode::Detached);
|
||||
process.setEnvironment(realEnv);
|
||||
process.setCommand(CommandLine{*shell});
|
||||
process.setWorkingDirectory(path);
|
||||
FilePath workingDir = path;
|
||||
if (!workingDir.isDir())
|
||||
workingDir = workingDir.parentDir();
|
||||
if (QTC_GUARD(workingDir.exists()))
|
||||
process.setWorkingDirectory(workingDir);
|
||||
process.start();
|
||||
|
||||
return {};
|
||||
|
Reference in New Issue
Block a user