mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-05 21:50:21 +08:00
Don't create empty literal pieces
I noticed that format_pieces can create an empty literal piece. However, there's never a need for one, so this patch removes the possibility. gdb/ChangeLog 2019-10-01 Tom Tromey <tom@tromey.com> * unittests/format_pieces-selftests.c: Update. Add final format. * gdbsupport/format.c (format_pieces::format_pieces): Don't add empty literal pieces.
This commit is contained in:
@ -1,3 +1,9 @@
|
||||
2019-10-01 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* unittests/format_pieces-selftests.c: Update. Add final format.
|
||||
* gdbsupport/format.c (format_pieces::format_pieces): Don't add
|
||||
empty literal pieces.
|
||||
|
||||
2019-10-01 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* ui-out.h (enum class ui_out_style_kind): Remove.
|
||||
|
@ -129,7 +129,8 @@ format_pieces::format_pieces (const char **arg)
|
||||
current_substring += f - 1 - prev_start;
|
||||
*current_substring++ = '\0';
|
||||
|
||||
m_pieces.emplace_back (sub_start, literal_piece);
|
||||
if (*sub_start != '\0')
|
||||
m_pieces.emplace_back (sub_start, literal_piece);
|
||||
|
||||
percent_loc = f - 1;
|
||||
|
||||
@ -340,11 +341,14 @@ format_pieces::format_pieces (const char **arg)
|
||||
|
||||
/* Record the remainder of the string. */
|
||||
|
||||
sub_start = current_substring;
|
||||
if (f > prev_start)
|
||||
{
|
||||
sub_start = current_substring;
|
||||
|
||||
strncpy (current_substring, prev_start, f - prev_start);
|
||||
current_substring += f - prev_start;
|
||||
*current_substring++ = '\0';
|
||||
strncpy (current_substring, prev_start, f - prev_start);
|
||||
current_substring += f - prev_start;
|
||||
*current_substring++ = '\0';
|
||||
|
||||
m_pieces.emplace_back (sub_start, literal_piece);
|
||||
m_pieces.emplace_back (sub_start, literal_piece);
|
||||
}
|
||||
}
|
||||
|
@ -48,13 +48,15 @@ test_escape_sequences ()
|
||||
static void
|
||||
test_format_specifier ()
|
||||
{
|
||||
check ("Hello %d%llx%%d", /* ARI: %ll */
|
||||
/* The format string here ends with a % sequence, to ensure we don't
|
||||
see a trailing empty literal piece. */
|
||||
check ("Hello %d%llx%%d%d", /* ARI: %ll */
|
||||
{
|
||||
format_piece ("Hello ", literal_piece),
|
||||
format_piece ("%d", int_arg),
|
||||
format_piece ("", literal_piece),
|
||||
format_piece ("%llx", long_long_arg), /* ARI: %ll */
|
||||
format_piece ("%%d", literal_piece),
|
||||
format_piece ("%d", int_arg),
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user