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:
Christian Kandeler
2025-04-17 13:27:47 +02:00
parent b3a97d3416
commit 034245ec1f
2 changed files with 11 additions and 2 deletions

View File

@@ -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());

View File

@@ -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 {};