mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 06:45:56 +08:00
PR gdb/11092
* c-lang.c (c_printstr): Compute real length of NUL terminated string at first.
This commit is contained in:
26
gdb/c-lang.c
26
gdb/c-lang.c
@ -390,6 +390,19 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
|
||||
int finished = 0;
|
||||
int need_escape = 0;
|
||||
|
||||
if (length == -1)
|
||||
{
|
||||
unsigned long current_char = 1;
|
||||
|
||||
for (i = 0; current_char; ++i)
|
||||
{
|
||||
QUIT;
|
||||
current_char = extract_unsigned_integer (string + i * width,
|
||||
width, byte_order);
|
||||
}
|
||||
length = i;
|
||||
}
|
||||
|
||||
/* If the string was not truncated due to `set print elements', and
|
||||
the last byte of it is a null, we don't print that, in traditional C
|
||||
style. */
|
||||
@ -424,19 +437,6 @@ c_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
|
||||
return;
|
||||
}
|
||||
|
||||
if (length == -1)
|
||||
{
|
||||
unsigned long current_char = 1;
|
||||
|
||||
for (i = 0; current_char; ++i)
|
||||
{
|
||||
QUIT;
|
||||
current_char = extract_unsigned_integer (string + i * width,
|
||||
width, byte_order);
|
||||
}
|
||||
length = i;
|
||||
}
|
||||
|
||||
/* Arrange to iterate over the characters, in wchar_t form. */
|
||||
iter = make_wchar_iterator (string, length * width, encoding, width);
|
||||
cleanup = make_cleanup_wchar_iterator (iter);
|
||||
|
Reference in New Issue
Block a user