From a512c8e0c8f0ba0f216e843af94f3b830163e285 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 5 Sep 2017 15:32:25 +0200 Subject: [PATCH] Debugger: Centralize some parameter sanitization Change-Id: I00e7c22adcf32ba8251b357e75eb9207b6f98f1b Reviewed-by: Christian Stenger --- src/plugins/debugger/cdb/cdbengine.cpp | 3 --- src/plugins/debugger/debuggerengine.cpp | 24 --------------------- src/plugins/debugger/debuggerengine.h | 2 -- src/plugins/debugger/debuggerruncontrol.cpp | 15 +++++++++++++ src/plugins/debugger/gdb/gdbplainengine.cpp | 3 --- src/plugins/debugger/gdb/termgdbadapter.cpp | 3 --- src/plugins/debugger/lldb/lldbengine.cpp | 3 --- 7 files changed, 15 insertions(+), 38 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index b8f240e5d88..fc6ae9ac378 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -455,9 +455,6 @@ void CdbEngine::setupEngine() if (debug) qDebug(">setupEngine"); - if (!prepareCommand()) - return; - init(); if (!m_logTime.elapsed()) m_logTime.start(); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 93a2d69aada..dd3d98fc980 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1239,30 +1239,6 @@ QString DebuggerEngine::nativeStartupCommands() const runParameters().additionalStartupCommands}).join('\n')); } -bool DebuggerEngine::prepareCommand() -{ - if (HostOsInfo::isWindowsHost()) { - DebuggerRunParameters &rp = runParameters(); - QtcProcess::SplitError perr; - rp.inferior.commandLineArguments = - QtcProcess::prepareArgs(rp.inferior.commandLineArguments, &perr, - HostOsInfo::hostOs(), nullptr, - &rp.inferior.workingDirectory).toWindowsArgs(); - if (perr != QtcProcess::SplitOk) { - // perr == BadQuoting is never returned on Windows - // FIXME? QTCREATORBUG-2809 - showMessage("ADAPTER START FAILED"); - const QString title = tr("Adapter start failed"); - const QString msg = tr("Debugging complex command lines " - "is currently not supported on Windows."); - ICore::showWarningWithOptions(title, msg); - notifyEngineSetupFailed(); - return false; - } - } - return true; -} - void DebuggerEngine::updateBreakpointMarker(const Breakpoint &bp) { d->m_disassemblerAgent.updateBreakpointMarker(bp); diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 04e1196ad43..9488b93a1b7 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -336,8 +336,6 @@ public: QString expand(const QString &string) const; QString nativeStartupCommands() const; - bool prepareCommand(); - protected: // The base notify*() function implementation should be sufficient // in most cases, but engines are free to override them to do some diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index b4a61a1685b..fb43e60eeaf 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -693,6 +693,21 @@ static bool fixupParameters(DebuggerRunParameters &rp, RunControl *runControl, Q breakOnMainNextTime = false; } + if (HostOsInfo::isWindowsHost()) { + QtcProcess::SplitError perr; + rp.inferior.commandLineArguments = + QtcProcess::prepareArgs(rp.inferior.commandLineArguments, &perr, + HostOsInfo::hostOs(), nullptr, + &rp.inferior.workingDirectory).toWindowsArgs(); + if (perr != QtcProcess::SplitOk) { + // perr == BadQuoting is never returned on Windows + // FIXME? QTCREATORBUG-2809 + m_errors.append(DebuggerPlugin::tr("Debugging complex command lines " + "is currently not supported on Windows.")); + return false; + } + } + return true; } diff --git a/src/plugins/debugger/gdb/gdbplainengine.cpp b/src/plugins/debugger/gdb/gdbplainengine.cpp index d957336891a..a1b5bf7ed4b 100644 --- a/src/plugins/debugger/gdb/gdbplainengine.cpp +++ b/src/plugins/debugger/gdb/gdbplainengine.cpp @@ -112,9 +112,6 @@ void GdbPlainEngine::setupEngine() QTC_ASSERT(state() == EngineSetupRequested, qDebug() << state()); showMessage("TRYING TO START ADAPTER"); - if (!prepareCommand()) - return; - QStringList gdbArgs; if (!m_outputCollector.listen()) { diff --git a/src/plugins/debugger/gdb/termgdbadapter.cpp b/src/plugins/debugger/gdb/termgdbadapter.cpp index 60a66cb9f7a..33a1390b02f 100644 --- a/src/plugins/debugger/gdb/termgdbadapter.cpp +++ b/src/plugins/debugger/gdb/termgdbadapter.cpp @@ -77,9 +77,6 @@ void GdbTermEngine::setupEngine() // m_stubProc.stop(); // m_stubProc.blockSignals(false); - if (!prepareCommand()) - return; - m_stubProc.setWorkingDirectory(runParameters().inferior.workingDirectory); // Set environment + dumper preload. m_stubProc.setEnvironment(runParameters().stubEnvironment); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index a844d982481..433440f5f47 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -205,9 +205,6 @@ void LldbEngine::setupEngine() // m_stubProc.stop(); // m_stubProc.blockSignals(false); - if (!prepareCommand()) - return; - m_stubProc.setWorkingDirectory(runParameters().inferior.workingDirectory); // Set environment + dumper preload. m_stubProc.setEnvironment(runParameters().stubEnvironment);