Change tui_which_element::data_window to be a pointer
authorTom Tromey <tom@tromey.com>
Sun, 16 Jun 2019 21:53:36 +0000 (15:53 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 25 Jun 2019 13:48:36 +0000 (07:48 -0600)
A coming patch will add a constructor to tui_gen_win_info.  However,
because the tui_which_element union contains an object of this type,
first something must be done here in order to avoid having a union
with a member that has a constructor.  This patch changes this element
to be a pointer instead.

gdb/ChangeLog
2019-06-25  Tom Tromey  <tom@tromey.com>

* tui/tui-wingeneral.c (tui_refresh_win): Update.
* tui/tui-windata.c (tui_first_data_item_displayed)
(tui_delete_data_content_windows): Update.
* tui/tui-win.c (tui_data_window::set_new_height): Update.
* tui/tui-regs.c (tui_show_registers, tui_show_register_group)
(tui_display_registers_from, tui_check_register_values): Update.
* tui/tui-data.h (union tui_which_element) <data_window>: Now a
pointer.
* tui/tui-data.c (init_content_element): Update.  Allocate the new
window.
(tui_free_data_content): Update.
(free_content_elements) <case DATA_WIN>: Free the window.

gdb/ChangeLog
gdb/tui/tui-data.c
gdb/tui/tui-data.h
gdb/tui/tui-regs.c
gdb/tui/tui-win.c
gdb/tui/tui-windata.c
gdb/tui/tui-wingeneral.c

index 71fe526d358138eda6a8bea4e4a2fd1f7606dbd3..3f394636e554ee53c050a9af9bcad79d98c6f305 100644 (file)
@@ -1,3 +1,18 @@
+2019-06-25  Tom Tromey  <tom@tromey.com>
+
+       * tui/tui-wingeneral.c (tui_refresh_win): Update.
+       * tui/tui-windata.c (tui_first_data_item_displayed)
+       (tui_delete_data_content_windows): Update.
+       * tui/tui-win.c (tui_data_window::set_new_height): Update.
+       * tui/tui-regs.c (tui_show_registers, tui_show_register_group)
+       (tui_display_registers_from, tui_check_register_values): Update.
+       * tui/tui-data.h (union tui_which_element) <data_window>: Now a
+       pointer.
+       * tui/tui-data.c (init_content_element): Update.  Allocate the new
+       window.
+       (tui_free_data_content): Update.
+       (free_content_elements) <case DATA_WIN>: Free the window.
+
 2019-06-25  Tom Tromey  <tom@tromey.com>
 
        * tui/tui-wingeneral.c (tui_unhighlight_win, tui_highlight_win):
index a351113efb974204d94beed47d5f815382a9919c..5a742ac518951dda8a34a0a1a75d30d9d2dd0a91 100644 (file)
@@ -435,11 +435,12 @@ init_content_element (struct tui_win_element *element,
       element->which_element.source.has_break = FALSE;
       break;
     case DATA_WIN:
-      tui_init_generic_part (&element->which_element.data_window);
-      element->which_element.data_window.type = DATA_ITEM_WIN;
-      element->which_element.data_window.content =
+      element->which_element.data_window = XNEW (struct tui_gen_win_info);
+      tui_init_generic_part (element->which_element.data_window);
+      element->which_element.data_window->type = DATA_ITEM_WIN;
+      element->which_element.data_window->content =
        tui_alloc_content (1, DATA_ITEM_WIN);
-      element->which_element.data_window.content_size = 1;
+      element->which_element.data_window->content_size = 1;
       break;
     case CMD_WIN:
       element->which_element.command.line = NULL;
@@ -646,7 +647,7 @@ tui_free_data_content (tui_win_content content,
   for (i = 0; i < content_size; i++)
     {
       struct tui_gen_win_info *generic_win
-       = &content[i]->which_element.data_window;
+       = content[i]->which_element.data_window;
 
       if (generic_win != NULL)
        {
@@ -710,6 +711,7 @@ free_content_elements (tui_win_content content,
                      xfree (element->which_element.source.line);
                      break;
                    case DATA_WIN:
+                     xfree (element->which_element.data_window);
                      xfree (element);
                      break;
                    case DATA_ITEM_WIN:
index 572fea548310e6c41d91efecde105763b9c8327a..09e2f289391fe21c54ca7bf236041da9a8f6e945 100644 (file)
@@ -212,7 +212,7 @@ typedef char tui_exec_info_content[TUI_EXECINFO_SIZE];
 union tui_which_element
 {
   struct tui_source_element source;    /* The source elements.  */
-  struct tui_gen_win_info data_window; /* Data display elements.  */
+  struct tui_gen_win_info *data_window;        /* Data display elements.  */
   struct tui_data_element data;                /* Elements of data_window.  */
   struct tui_command_element command;  /* Command elements.  */
   struct tui_locator_element locator;  /* Locator elements.  */
index d7940af984be8daee9324248a9329c4962513951..7367cf7c0cb3d6f423ad32665e3c44eff2930ac1 100644 (file)
@@ -165,7 +165,7 @@ tui_show_registers (struct reggroup *group)
          struct tui_gen_win_info *data_item_win;
           struct tui_win_element *win;
 
-         data_item_win = &TUI_DATA_WIN->regs_content[i]
+         data_item_win = TUI_DATA_WIN->regs_content[i]
             ->which_element.data_window;
           win = data_item_win->content[0];
           win->which_element.data.highlight = FALSE;
@@ -261,7 +261,7 @@ tui_show_register_group (struct reggroup *group,
            continue;
 
          data_item_win =
-            &TUI_DATA_WIN->regs_content[pos]->which_element.data_window;
+            TUI_DATA_WIN->regs_content[pos]->which_element.data_window;
           data = &data_item_win->content[0]->which_element.data;
           if (data)
             {
@@ -306,7 +306,7 @@ tui_display_registers_from (int start_element_no)
           int len;
 
           data_item_win
-           = &TUI_DATA_WIN->regs_content[i]->which_element.data_window;
+           = TUI_DATA_WIN->regs_content[i]->which_element.data_window;
           data = &data_item_win->content[0]->which_element.data;
           len = 0;
           p = data->content;
@@ -347,7 +347,7 @@ tui_display_registers_from (int start_element_no)
              struct tui_data_element *data_element_ptr;
 
              /* Create the window if necessary.  */
-             data_item_win = &TUI_DATA_WIN->regs_content[i]
+             data_item_win = TUI_DATA_WIN->regs_content[i]
                 ->which_element.data_window;
              data_element_ptr = &data_item_win->content[0]->which_element.data;
               if (data_item_win->handle != NULL
@@ -485,7 +485,7 @@ tui_check_register_values (struct frame_info *frame)
              struct tui_gen_win_info *data_item_win_ptr;
              int was_hilighted;
 
-             data_item_win_ptr = &TUI_DATA_WIN->regs_content[i]->
+             data_item_win_ptr = TUI_DATA_WIN->regs_content[i]->
                 which_element.data_window;
              data = &data_item_win_ptr->content[0]->which_element.data;
              was_hilighted = data->highlight;
index dc40ab7736dedfaccd314ffa0cffb4b2d03da532..e4c1522a62de4401f3360ab1daf4d394c96e9ca2 100644 (file)
@@ -1273,7 +1273,7 @@ tui_data_window::set_new_height (int height)
   for (int i = 0; i < generic.content_size; i++)
     {
       struct tui_gen_win_info *gen_win_info
-       = &generic.content[i]->which_element.data_window;
+       = generic.content[i]->which_element.data_window;
       tui_delete_win (gen_win_info->handle);
       gen_win_info->handle = NULL;
     }
index 770baf857f606bde05ea02e6ba935c1b6c4fa0e3..1647527e240a07eb3ec98c07795ed72722a2c78f 100644 (file)
@@ -54,7 +54,7 @@ tui_first_data_item_displayed (void)
       struct tui_gen_win_info *data_item_win;
 
       data_item_win
-       = &TUI_DATA_WIN->generic.content[i]->which_element.data_window;
+       = TUI_DATA_WIN->generic.content[i]->which_element.data_window;
       if (data_item_win->handle != NULL
          && data_item_win->is_visible)
        element_no = i;
@@ -75,7 +75,7 @@ tui_delete_data_content_windows (void)
   for (i = 0; (i < TUI_DATA_WIN->generic.content_size); i++)
     {
       data_item_win_ptr
-       = &TUI_DATA_WIN->generic.content[i]->which_element.data_window;
+       = TUI_DATA_WIN->generic.content[i]->which_element.data_window;
       tui_delete_win (data_item_win_ptr->handle);
       data_item_win_ptr->handle = NULL;
       data_item_win_ptr->is_visible = false;
index c17782894424cbd99dd39690b4dc91d1516ec142..ccee399057a94aa9c90824f0ef5113359f52d121 100644 (file)
@@ -43,7 +43,7 @@ tui_refresh_win (struct tui_gen_win_info *win_info)
        {
          struct tui_gen_win_info *data_item_win_ptr;
 
-         data_item_win_ptr = &win_info->content[i]->which_element.data_window;
+         data_item_win_ptr = win_info->content[i]->which_element.data_window;
          if (data_item_win_ptr != NULL
              && data_item_win_ptr->handle != NULL)
            wrefresh (data_item_win_ptr->handle);