Fix first time you type UP or DOWN in TUI's command window
authorPedro Alves <palves@redhat.com>
Mon, 18 Mar 2019 18:32:42 +0000 (18:32 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 18 Mar 2019 18:32:42 +0000 (18:32 +0000)
The first time you type UP or DOWN arrow in the command window, GDB
should scroll the source window, but instead it displays the line
number and the file name in the command window(?).

What happens there is that the first time we call
tui_ui_out::do_field_int, it doesn't initialize m_line, because
m_start_of_line is -1, as set by the constructor; and then the
following call to tui_ui_out::do_field_string falls back to
cli_ui_out::do_field_string because m_line is zero.

The problem is caused by a typo in the C++ification of tui_ui_out,
commit 112e8700a6f, where m_line and m_start_of_line's initial values
were swapped from what they used to be:

 -struct ui_out *
 -tui_out_new (struct ui_file *stream)
 +tui_ui_out::tui_ui_out (ui_file *stream)
 +: cli_ui_out (stream, 0),
 +  m_line (0),
 +  m_start_of_line (-1)
  {
 -
 -  /* Initialize our fields.  */
 -  data->line = -1;
 -  data->start_of_line = 0;

This commit fixes it.

gdb/ChangeLog:
2019-03-18  Pedro Alves  <palves@redhat.com>
    Eli Zaretskii <eliz@gnu.org>

* tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
m_line and m_start_of_line.

gdb/ChangeLog
gdb/tui/tui-out.c

index 5599f5bc50ec4db5b0f725633831c2bf37b03290..79376dbaf279910e41b1a55e8f015533c5c3d6eb 100644 (file)
@@ -1,3 +1,9 @@
+2019-03-18  Pedro Alves  <palves@redhat.com>
+           Eli Zaretskii <eliz@gnu.org>
+
+       * tui/tui-out.c (tui_ui_out::tui_ui_out): Fix initialization of
+       m_line and m_start_of_line.
+
 2019-03-18  Eli Zaretskii  <eliz@gnu.org>
 
        * tui/tui-io.c (gdb_wgetch): Don't echo CR.
index d5a173b94a40ee79c41b2a51e8b7b927181be282..dd37736c4a70569a02b222d9db29410ccc0ffe7f 100644 (file)
@@ -109,8 +109,8 @@ tui_ui_out::do_text (const char *string)
 
 tui_ui_out::tui_ui_out (ui_file *stream)
 : cli_ui_out (stream, 0),
-  m_line (0),
-  m_start_of_line (-1)
+  m_line (-1),
+  m_start_of_line (0)
 {
 }