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  <tom@tromey.com>

	PR tui/25342:
	* tui/tui-winsource.c (tui_copy_source_line): Use ISNCTRL.
This commit is contained in:
Tom Tromey 2020-09-27 20:30:30 -06:00
parent 9e820dec13
commit 35a982372f
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2020-09-27 Tom Tromey <tom@tromey.com>
PR tui/25342:
* tui/tui-winsource.c (tui_copy_source_line): Use ISNCTRL.
2020-09-27 Tom Tromey <tom@tromey.com>
* unittests/tui-selftests.c: Update.

View File

@ -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);
}