[Lldb-commits] [lldb] 7274848 - [lldb] Fix editline unicode on Linux
Jan Kratochvil via lldb-commits
lldb-commits at lists.llvm.org
Tue Jul 13 04:01:12 PDT 2021
Author: Jan Kratochvil
Date: 2021-07-13T12:37:53+02:00
New Revision: 72748488addd651beb7b60da462c721f3e175357
URL: https://github.com/llvm/llvm-project/commit/72748488addd651beb7b60da462c721f3e175357
DIFF: https://github.com/llvm/llvm-project/commit/72748488addd651beb7b60da462c721f3e175357.diff
LOG: [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
Added:
Modified:
lldb/source/Core/IOHandlerCursesGUI.cpp
lldb/tools/driver/Driver.cpp
Removed:
################################################################################
diff --git a/lldb/source/Core/IOHandlerCursesGUI.cpp b/lldb/source/Core/IOHandlerCursesGUI.cpp
index d37271bd1e53a..fb18e7d90eaa8 100644
--- a/lldb/source/Core/IOHandlerCursesGUI.cpp
+++ b/lldb/source/Core/IOHandlerCursesGUI.cpp
@@ -67,7 +67,6 @@
#include <cassert>
#include <cctype>
#include <cerrno>
-#include <clocale>
#include <cstdint>
#include <cstdio>
#include <cstring>
@@ -2627,8 +2626,6 @@ class Application {
}
void Initialize() {
- ::setlocale(LC_ALL, "");
- ::setlocale(LC_CTYPE, "");
m_screen = ::newterm(nullptr, m_out, m_in);
::start_color();
::curs_set(0);
diff --git a/lldb/tools/driver/Driver.cpp b/lldb/tools/driver/Driver.cpp
index b8c5aec5fd80b..a6a4a2a1b80b8 100644
--- a/lldb/tools/driver/Driver.cpp
+++ b/lldb/tools/driver/Driver.cpp
@@ -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);
More information about the lldb-commits
mailing list