[lldb] Fix editline unicode on Linux

Based on:
  [lldb-dev] proposed change to remove conditional WCHAR support in libedit wrapper
  https://lists.llvm.org/pipermail/lldb-dev/2021-July/016961.html

There is already setlocale in lldb/source/Core/IOHandlerCursesGUI.cpp
but that does not apply for Editline GUI editing.

Unaware how to make automated test for this, it requires pty.

Reviewed By: teemperor

Differential Revision: https://reviews.llvm.org/D105779
This commit is contained in:
Jan Kratochvil 2021-07-13 12:37:53 +02:00
parent af55335924
commit 72748488ad
2 changed files with 5 additions and 3 deletions

View File

@ -67,7 +67,6 @@
#include <cassert>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cstdint>
#include <cstdio>
#include <cstring>
@ -2627,8 +2626,6 @@ public:
}
void Initialize() {
::setlocale(LC_ALL, "");
::setlocale(LC_CTYPE, "");
m_screen = ::newterm(nullptr, m_out, m_in);
::start_color();
::curs_set(0);

View File

@ -31,6 +31,7 @@
#include <algorithm>
#include <atomic>
#include <bitset>
#include <clocale>
#include <csignal>
#include <string>
#include <thread>
@ -867,6 +868,10 @@ static llvm::Optional<int> InitializeReproducer(llvm::StringRef argv0,
}
int main(int argc, char const *argv[]) {
// Editline uses for example iswprint which is dependent on LC_CTYPE.
std::setlocale(LC_ALL, "");
std::setlocale(LC_CTYPE, "");
// Setup LLVM signal handlers and make sure we call llvm_shutdown() on
// destruction.
llvm::InitLLVM IL(argc, argv, /*InstallPipeSignalExitHandler=*/false);