[LLDB][GUI] Fix text field incorrect key handling
authorOmar Emara <mail@OmarEmara.dev>
Wed, 18 Aug 2021 22:06:05 +0000 (15:06 -0700)
committerGreg Clayton <gclayton@fb.com>
Wed, 18 Aug 2021 22:06:27 +0000 (15:06 -0700)
commit698e2106362add2bd3aca6f8ffebe9dd90a50529
tree216e8fc0945e9f4dc9575159ff7b0d0c7df27690
parenta0ed44943a62424032ee3a0f17d23a2851f80095
[LLDB][GUI] Fix text field incorrect key handling

The isprint libc function was used to determine if the key code
represents a printable character. The problem is that the specification
leaves the behavior undefined if the key is not representable as an
unsigned char, which is the case for many ncurses keys. This patch adds
and explicit check for this undefined behavior and make it consistent.

The llvm::isPrint function didn't work correctly for some reason, most
likely because it takes a char instead of an int, which I guess makes it
unsuitable for checking ncurses key codes.

Reviewed By: clayborg

Differential Revision: https://reviews.llvm.org/D108327
lldb/source/Core/IOHandlerCursesGUI.cpp