Author: lawrence_danna Date: Wed Oct 9 11:43:03 2019 New Revision: 374197 URL: http://llvm.org/viewvc/llvm-project?rev=374197&view=rev Log: protect libedit and LLDB gui from receiving null FILE* streams
Summary: We now have valid files that will return NULL from GetStream(). libedit and the LLDB gui are the only places left that need FILE* streams. Both are doing curses-like user interaction that only make sense with a real terminal anyway, so there is no need to convert them off of their use of FILE*. But we should check for null streams before enabling these features. Reviewers: JDevlieghere, jasonmolenda, labath Reviewed By: JDevlieghere, labath Subscribers: lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D68677 Modified: lldb/trunk/source/Commands/CommandObjectGUI.cpp lldb/trunk/source/Core/IOHandler.cpp Modified: lldb/trunk/source/Commands/CommandObjectGUI.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectGUI.cpp?rev=374197&r1=374196&r2=374197&view=diff ============================================================================== --- lldb/trunk/source/Commands/CommandObjectGUI.cpp (original) +++ lldb/trunk/source/Commands/CommandObjectGUI.cpp Wed Oct 9 11:43:03 2019 @@ -29,7 +29,9 @@ bool CommandObjectGUI::DoExecute(Args &a Debugger &debugger = GetDebugger(); File &input = debugger.GetInputFile(); - if (input.GetIsRealTerminal() && input.GetIsInteractive()) { + File &output = debugger.GetOutputFile(); + if (input.GetStream() && output.GetStream() && input.GetIsRealTerminal() && + input.GetIsInteractive()) { IOHandlerSP io_handler_sp(new IOHandlerCursesGUI(debugger)); if (io_handler_sp) debugger.PushIOHandler(io_handler_sp); Modified: lldb/trunk/source/Core/IOHandler.cpp URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/IOHandler.cpp?rev=374197&r1=374196&r2=374197&view=diff ============================================================================== --- lldb/trunk/source/Core/IOHandler.cpp (original) +++ lldb/trunk/source/Core/IOHandler.cpp Wed Oct 9 11:43:03 2019 @@ -266,7 +266,8 @@ IOHandlerEditline::IOHandlerEditline( #ifndef LLDB_DISABLE_LIBEDIT bool use_editline = false; - use_editline = m_input_sp && m_input_sp->GetIsRealTerminal(); + use_editline = GetInputFILE() && GetOutputFILE() && GetErrorFILE() && + m_input_sp && m_input_sp->GetIsRealTerminal(); if (use_editline) { m_editline_up.reset(new Editline(editline_name, GetInputFILE(), _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits