Typing "gui" will crash programs that don't give LLDB a real terminal.
We now verify that the debugger's input file is a valid terminal file descriptor before allowing the "gui" command to try to run. Xcode would crash if you typed "gui" at the command line prior to this fix. <rdar://problem/18775851> llvm-svn: 226027
This commit is contained in:
parent
0fd9e5f719
commit
456f2712b3
|
@ -42,10 +42,22 @@ CommandObjectGUI::DoExecute (Args& args, CommandReturnObject &result)
|
|||
if (args.GetArgumentCount() == 0)
|
||||
{
|
||||
Debugger &debugger = m_interpreter.GetDebugger();
|
||||
IOHandlerSP io_handler_sp (new IOHandlerCursesGUI (debugger));
|
||||
if (io_handler_sp)
|
||||
debugger.PushIOHandler(io_handler_sp);
|
||||
result.SetStatus (eReturnStatusSuccessFinishResult);
|
||||
|
||||
lldb::StreamFileSP input_sp = debugger.GetInputFile();
|
||||
if (input_sp &&
|
||||
input_sp->GetFile().GetIsRealTerminal() &&
|
||||
input_sp->GetFile().GetIsInteractive())
|
||||
{
|
||||
IOHandlerSP io_handler_sp (new IOHandlerCursesGUI (debugger));
|
||||
if (io_handler_sp)
|
||||
debugger.PushIOHandler(io_handler_sp);
|
||||
result.SetStatus (eReturnStatusSuccessFinishResult);
|
||||
}
|
||||
else
|
||||
{
|
||||
result.AppendError("the gui command requires an interactive terminal.");
|
||||
result.SetStatus (eReturnStatusFailed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue