[gdb/tui] Fix buglet in tui_update_variables
authorTom de Vries <tdevries@suse.de>
Mon, 22 May 2023 14:44:56 +0000 (16:44 +0200)
committerTom de Vries <tdevries@suse.de>
Mon, 22 May 2023 14:44:56 +0000 (16:44 +0200)
I noticed a buglet in tui_update_variables:
...
   entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner);
   if (tui_border_lrcorner != (chtype) entry->value)
    {
      tui_border_lrcorner = (entry->value < 0) ? ACS_LRCORNER : entry->value;
...

When assigning the new value to tui_border_lrcorner, an entry->value of -1 is
taken into account, but not when comparing to the current value of
tui_border_lrcorner.

Fix this by introducing:
...
  int val = (entry->value < 0) ? ACS_LRCORNER : entry->value;
...
and using this in both comparison and assignment.

Tested on x86_64-linux.

gdb/tui/tui-win.c

index 6710b3e17e5bfcaf8506a087260e076b446e055c..7abd1e225b96cf6a8f426c96503ab7ebe7c1c801 100644 (file)
@@ -300,9 +300,10 @@ tui_update_variables ()
      Only check the first one.  The ACS characters are determined at
      run time by curses terminal management.  */
   entry = translate (tui_border_kind, tui_border_kind_translate_lrcorner);
-  if (tui_border_lrcorner != (chtype) entry->value)
+  int val = (entry->value < 0) ? ACS_LRCORNER : entry->value;
+  if (tui_border_lrcorner != (chtype) val)
     {
-      tui_border_lrcorner = (entry->value < 0) ? ACS_LRCORNER : entry->value;
+      tui_border_lrcorner = val;
       need_redraw = true;
     }
   entry = translate (tui_border_kind, tui_border_kind_translate_llcorner);