public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug tui/30389] New: [gdb/tui] status line string longer than necessary
@ 2023-04-25 10:43 vries at gcc dot gnu.org
  2023-04-25 10:44 ` [Bug tui/30389] " vries at gcc dot gnu.org
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2023-04-25 10:43 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

            Bug ID: 30389
           Summary: [gdb/tui] status line string longer than necessary
           Product: gdb
           Version: 13.1
            Status: NEW
          Severity: normal
          Priority: P2
         Component: tui
          Assignee: unassigned at sourceware dot org
          Reporter: vries at gcc dot gnu.org
  Target Milestone: ---

Consider this bit in tui_locator_window::make_status_line ():
...
  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 ());

  return string_val;
...

This looks like it's trying to achieve:
...
  gdb_assert (string_val.size () == status_size);
...
but that's not the case, because string.size is used instead of
string_val.size.

String.size is 0 for me.

Regression since commit 5d10a2041eb ("gdb: add string_file::release method"),
which did:
...
+  std::string string_val = string.release ();
+
   if (string.size () < status_size)
-    string.puts (n_spaces (status_size - string.size ()));
+    string_val.append (status_size - string.size (), ' ');
   else if (string.size () > status_size)
-    string.string ().erase (status_size, string.size ());
+    string_val.erase (status_size, string.size ());

-  return std::move (string.string ());
+  return string_val;
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tui/30389] [gdb/tui] status line string longer than necessary
  2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
@ 2023-04-25 10:44 ` vries at gcc dot gnu.org
  2023-04-25 10:52 ` vries at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2023-04-25 10:44 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|13.1                        |HEAD
                 CC|                            |simark at simark dot ca,
                   |                            |tromey at sourceware dot org

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tui/30389] [gdb/tui] status line string longer than necessary
  2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
  2023-04-25 10:44 ` [Bug tui/30389] " vries at gcc dot gnu.org
@ 2023-04-25 10:52 ` vries at gcc dot gnu.org
  2023-04-25 17:56 ` simon.marchi at polymtl dot ca
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2023-04-25 10:52 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |minor

--- Comment #1 from Tom de Vries <vries at gcc dot gnu.org> ---
Tentative patch:
...
diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
index 0a750187c26..4769a7706d1 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;
 }
...

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tui/30389] [gdb/tui] status line string longer than necessary
  2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
  2023-04-25 10:44 ` [Bug tui/30389] " vries at gcc dot gnu.org
  2023-04-25 10:52 ` vries at gcc dot gnu.org
@ 2023-04-25 17:56 ` simon.marchi at polymtl dot ca
  2023-04-26 16:15 ` cvs-commit at gcc dot gnu.org
  2023-04-26 16:19 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: simon.marchi at polymtl dot ca @ 2023-04-25 17:56 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

Simon Marchi <simon.marchi at polymtl dot ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |simon.marchi at polymtl dot ca

--- Comment #2 from Simon Marchi <simon.marchi at polymtl dot ca> ---
(In reply to Tom de Vries from comment #1)
> Tentative patch:
> ...
> diff --git a/gdb/tui/tui-stack.c b/gdb/tui/tui-stack.c
> index 0a750187c26..4769a7706d1 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;
>  }
> ...

That looks good.  That's what you get when you use meaningless / generic
variable names :).

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tui/30389] [gdb/tui] status line string longer than necessary
  2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2023-04-25 17:56 ` simon.marchi at polymtl dot ca
@ 2023-04-26 16:15 ` cvs-commit at gcc dot gnu.org
  2023-04-26 16:19 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-04-26 16:15 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

--- Comment #3 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom de Vries <vries@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=17f091b31eb2ad8a838bf3ab21201afd2eaf1636

commit 17f091b31eb2ad8a838bf3ab21201afd2eaf1636
Author: Tom de Vries <tdevries@suse.de>
Date:   Wed Apr 26 18:15:56 2023 +0200

    [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

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [Bug tui/30389] [gdb/tui] status line string longer than necessary
  2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2023-04-26 16:15 ` cvs-commit at gcc dot gnu.org
@ 2023-04-26 16:19 ` vries at gcc dot gnu.org
  4 siblings, 0 replies; 6+ messages in thread
From: vries at gcc dot gnu.org @ 2023-04-26 16:19 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=30389

Tom de Vries <vries at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |14.1
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #4 from Tom de Vries <vries at gcc dot gnu.org> ---
Fixed by commit.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-04-26 16:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-04-25 10:43 [Bug tui/30389] New: [gdb/tui] status line string longer than necessary vries at gcc dot gnu.org
2023-04-25 10:44 ` [Bug tui/30389] " vries at gcc dot gnu.org
2023-04-25 10:52 ` vries at gcc dot gnu.org
2023-04-25 17:56 ` simon.marchi at polymtl dot ca
2023-04-26 16:15 ` cvs-commit at gcc dot gnu.org
2023-04-26 16:19 ` vries at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).