add a workaround in GetLine to account for ReadFile not reporintg error
authorNathan Lanza <nathan@lanza.io>
Tue, 16 Jul 2019 23:01:59 +0000 (23:01 +0000)
committerNathan Lanza <nathan@lanza.io>
Tue, 16 Jul 2019 23:01:59 +0000 (23:01 +0000)
commite71679082c0ed1598a924aa974376e8ce21c1cea
tree856b40f613f62137ab1dad1b5bce0e80d4f5f864
parent1bd9c6547f92e694d8d724efb757bc9e8b1f3607
add a workaround in GetLine to account for ReadFile not reporintg error

Summary:
ReadFile on Windows is supposed to set ERROR_OPERATION_ABORTED according
to the docs on MSDN. However, this has evidently been a known bug since
Windows 8. Therefore, we can't detect if a signal interrupted in the
fgets. So pressing ctrl-c causes the repl to end and the process to
exit. A temporary workaround is just to attempt to fgets twice until
this bug is fixed.

A possible alternative would be to set a flag in the `sigint_handler`
and simply check that flag in the true part of the if statement.
However, signal handlers on Windows are asynchronous and this would
require sleeping on the repl loop thread while still not necessarily
guarnateeing that you caught the sigint.

Reviewers: jfb

Differential Revision: https://reviews.llvm.org/D64660

llvm-svn: 366281
lldb/source/Core/IOHandler.cpp