From 35a982372fd63da7dd2811d6150b0c61236bbbb5 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sun, 27 Sep 2020 20:30:30 -0600 Subject: [PATCH] Use ISCNTRL in tui_copy_source_line This changes tui_copy_source_line to use ISCNTRL. This lets it work more nicely with UTF-8 input. Note that this still won't work for stateful multi-byte encodings; for that much more work would be required. However, I think this patch does not make gdb any worse in this scenario. gdb/ChangeLog 2020-09-27 Tom Tromey PR tui/25342: * tui/tui-winsource.c (tui_copy_source_line): Use ISNCTRL. --- gdb/ChangeLog | 5 +++++ gdb/tui/tui-winsource.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 38b9fa6b353..fc016aeb345 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-09-27 Tom Tromey + + PR tui/25342: + * tui/tui-winsource.c (tui_copy_source_line): Use ISNCTRL. + 2020-09-27 Tom Tromey * unittests/tui-selftests.c: Update. diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c index 2300b9ab1e9..30b8f69027a 100644 --- a/gdb/tui/tui-winsource.c +++ b/gdb/tui/tui-winsource.c @@ -28,6 +28,7 @@ #include "source.h" #include "objfiles.h" #include "filenames.h" +#include "safe-ctype.h" #include "tui/tui.h" #include "tui/tui-data.h" @@ -107,7 +108,9 @@ tui_copy_source_line (const char **ptr, int *length) { /* Nothing. */ } - else if (c < 040 && c != '\t') + else if (c == '\t') + process_tab (); + else if (ISCNTRL (c)) { result.push_back ('^'); result.push_back (c + 0100); @@ -119,8 +122,6 @@ tui_copy_source_line (const char **ptr, int *length) result.push_back ('?'); ++column; } - else if (c == '\t') - process_tab (); else result.push_back (c); } -- 2.30.2