Fix a latent bug in print_wchar
authorTom Tromey <tom@tromey.com>
Sun, 13 Feb 2022 01:41:34 +0000 (18:41 -0700)
committerTom Tromey <tom@tromey.com>
Mon, 10 Oct 2022 16:43:34 +0000 (10:43 -0600)
commit3041b9313e360af215e235e4d07f9557a22ffd13
treeb8a842cd7c50117846a12342515d24499b339c75
parent05328f9105ed738cc4fe96429abd33466e891699
Fix a latent bug in print_wchar

print_wchar keeps track of when escape sequences are emitted, to force
an escape sequence if needed by a subsequent character.  For example
for the string concatenation "\0" "1", gdb will print "\000\061" --
because printing "\0001" might be confusing.

However, this code has two errors.  First, this logic is not needed
for octal escapes, because there is a length limit of 3 for octal
escapes, and gdb always prints these with "%.3o".  Second, though,
this *is* needed for hex escapes, because those do not have a length
limit.

This patch fixes these problems and adds the appropriate tests.
gdb/gdb_wchar.h
gdb/testsuite/gdb.base/charset.exp
gdb/valprint.c