diff options
3 files changed, 12 insertions, 18 deletions
diff --git a/lldb/include/lldb/Interpreter/ScriptInterpreter.h b/lldb/include/lldb/Interpreter/ScriptInterpreter.h index 8086886..491923e 100644 --- a/lldb/include/lldb/Interpreter/ScriptInterpreter.h +++ b/lldb/include/lldb/Interpreter/ScriptInterpreter.h @@ -36,13 +36,11 @@ private: class ScriptInterpreterIORedirect { public: - /// Create an IO redirect with /dev/null as input, output and error file. - static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> Create(); - - /// Create an IO redirect that redirects the output to the command return - /// object if set or to the debugger otherwise. + /// Create an IO redirect. If IO is enabled, this will redirects the output + /// to the command return object if set or to the debugger otherwise. If IO + /// is disabled, it will redirect all IO to /dev/null. static llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> - Create(Debugger &debugger, CommandReturnObject *result); + Create(bool enable_io, Debugger &debugger, CommandReturnObject *result); ~ScriptInterpreterIORedirect(); diff --git a/lldb/source/Interpreter/ScriptInterpreter.cpp b/lldb/source/Interpreter/ScriptInterpreter.cpp index d46a104..967c228 100644 --- a/lldb/source/Interpreter/ScriptInterpreter.cpp +++ b/lldb/source/Interpreter/ScriptInterpreter.cpp @@ -119,7 +119,12 @@ static void ReadThreadBytesReceived(void *baton, const void *src, } llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> -ScriptInterpreterIORedirect::Create() { +ScriptInterpreterIORedirect::Create(bool enable_io, Debugger &debugger, + CommandReturnObject *result) { + if (enable_io) + return std::unique_ptr<ScriptInterpreterIORedirect>( + new ScriptInterpreterIORedirect(debugger, result)); + auto nullin = FileSystem::Instance().Open(FileSpec(FileSystem::DEV_NULL), File::eOpenOptionRead); if (!nullin) @@ -134,13 +139,6 @@ ScriptInterpreterIORedirect::Create() { new ScriptInterpreterIORedirect(std::move(*nullin), std::move(*nullout))); } -llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> -ScriptInterpreterIORedirect::Create(Debugger &debugger, - CommandReturnObject *result) { - return std::unique_ptr<ScriptInterpreterIORedirect>( - new ScriptInterpreterIORedirect(debugger, result)); -} - ScriptInterpreterIORedirect::ScriptInterpreterIORedirect( std::unique_ptr<File> input, std::unique_ptr<File> output) : m_input_file_sp(std::move(input)), diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp index 40ce7d9..d7f2fc6 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp +++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp @@ -912,10 +912,8 @@ bool ScriptInterpreterPythonImpl::ExecuteOneLine( // we use the following more complicated method to pass the command string // directly down to Python. llvm::Expected<std::unique_ptr<ScriptInterpreterIORedirect>> - io_redirect_or_error = - options.GetEnableIO() - ? ScriptInterpreterIORedirect::Create(m_debugger, result) - : ScriptInterpreterIORedirect::Create(); + io_redirect_or_error = ScriptInterpreterIORedirect::Create( + options.GetEnableIO(), m_debugger, result); if (!io_redirect_or_error) { if (result) result->AppendErrorWithFormatv( |