diff options
author | Tom de Vries <tdevries@suse.de> | 2023-04-26 18:15:56 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2023-04-26 18:15:56 +0200 |
commit | 17f091b31eb2ad8a838bf3ab21201afd2eaf1636 (patch) | |
tree | 8449bf016ad577eec994afbeb20b5fc8d97e1548 | |
parent | 3ad6c165ca098a0fa4491893a75b4b1581698484 (diff) | |
download | gdb-17f091b31eb2ad8a838bf3ab21201afd2eaf1636.zip gdb-17f091b31eb2ad8a838bf3ab21201afd2eaf1636.tar.gz gdb-17f091b31eb2ad8a838bf3ab21201afd2eaf1636.tar.bz2 |
[gdb/tui] Fix length of status line string
In commit 5d10a2041eb ("gdb: add string_file::release method") this was added:
...
+ std::string string_val = string.release ();
...
without updating subsequent uses of string.size (), which returns 0 after the
string.release () call.
Fix this by:
- using string_val.size () instead of string.size (), and
- adding an assert that would have caught this regression.
Tested on x86_64-linux.
Reviewed-By: Simon Marchi <simon.marchi@efficios.com>
PR tui/30389
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30389
-rw-r--r-- | gdb/tui/tui-stack.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c index 0a75018..76b8f06 100644 --- a/gdb/tui/tui-stack.c +++ b/gdb/tui/tui-stack.c @@ -183,10 +183,13 @@ tui_locator_window::make_status_line () const std::string string_val = string.release (); - if (string.size () < status_size) - string_val.append (status_size - string.size (), ' '); - else if (string.size () > status_size) - string_val.erase (status_size, string.size ()); + size_t len = string_val.size (); + if (len < status_size) + string_val.append (status_size - len, ' '); + else if (len > status_size) + string_val.erase (status_size, len); + + gdb_assert (string_val.size () == status_size); return string_val; } |