Pressing ^D in a non-empty input terminates LLDB. This was due to the fact that we stack more than one editline instance on top of each other and we still expect CTRL+D to exit the editline instance, but it should only do so when the line is empty. Otherwise it should (and does) delete the character at the cursor.
<rdar://problem/15944703> llvm-svn: 200489
This commit is contained in:
parent
196666cf5f
commit
10c0ef7b8a
|
@ -630,7 +630,21 @@ Editline::GetCharFromInputFileCallback (EditLine *e, char *c)
|
|||
if (editline && editline->m_got_eof == false)
|
||||
{
|
||||
char ch = ::fgetc(editline->GetInputFile());
|
||||
if (ch == '\x04' || ch == EOF)
|
||||
if (ch == '\x04')
|
||||
{
|
||||
// Only turn a CTRL+D into a EOF if we receive the
|
||||
// CTRL+D an empty line, otherwise it will forward
|
||||
// delete the character at the cursor
|
||||
const LineInfo *line_info = ::el_line(e);
|
||||
if (line_info != NULL &&
|
||||
line_info->buffer == line_info->cursor &&
|
||||
line_info->cursor == line_info->lastchar)
|
||||
{
|
||||
ch = EOF;
|
||||
}
|
||||
}
|
||||
|
||||
if (ch == EOF)
|
||||
{
|
||||
editline->m_got_eof = true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue