Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/external/gpl3/gdb/dist/gdb/tui Don't core dump when the wind...



details:   https://anonhg.NetBSD.org/src/rev/2f3f47380212
branches:  trunk
changeset: 828511:2f3f47380212
user:      christos <christos%NetBSD.org@localhost>
date:      Sun Dec 17 17:49:04 2017 +0000

description:
Don't core dump when the window is too small
XXX: feed upstream

diffstat:

 external/gpl3/gdb/dist/gdb/tui/tui-data.c       |   3 ++
 external/gpl3/gdb/dist/gdb/tui/tui-wingeneral.c |  31 +++++++++++++-----------
 external/gpl3/gdb/dist/gdb/tui/tui-winsource.c  |   6 ++++
 3 files changed, 26 insertions(+), 14 deletions(-)

diffs (89 lines):

diff -r e7fb67ecb9aa -r 2f3f47380212 external/gpl3/gdb/dist/gdb/tui/tui-data.c
--- a/external/gpl3/gdb/dist/gdb/tui/tui-data.c Sun Dec 17 17:18:34 2017 +0000
+++ b/external/gpl3/gdb/dist/gdb/tui/tui-data.c Sun Dec 17 17:49:04 2017 +0000
@@ -576,6 +576,9 @@
   struct tui_win_element *element_block_ptr;
   int i;
 
+  if (num_elements <= 0)
+    return NULL;
+
   content = XNEWVEC (struct tui_win_element *, num_elements);
 
   /*
diff -r e7fb67ecb9aa -r 2f3f47380212 external/gpl3/gdb/dist/gdb/tui/tui-wingeneral.c
--- a/external/gpl3/gdb/dist/gdb/tui/tui-wingeneral.c   Sun Dec 17 17:18:34 2017 +0000
+++ b/external/gpl3/gdb/dist/gdb/tui/tui-wingeneral.c   Sun Dec 17 17:49:04 2017 +0000
@@ -247,32 +247,35 @@
   make_all_visible (0);
 }
 
+static void
+tui_refresh_wi(struct tui_gen_win_info *wi)
+{
+  if (wi == NULL || wi->handle == NULL || !wi->is_visible)
+    return;
+
+  touchwin (wi->handle);
+  tui_refresh_win (wi);
+}
+
 /* Function to refresh all the windows currently displayed.  */
 
 void
 tui_refresh_all (struct tui_win_info **list)
 {
   int type;
-  struct tui_gen_win_info *locator = tui_locator_win_info_ptr ();
 
   for (type = SRC_WIN; (type < MAX_MAJOR_WINDOWS); type++)
     {
-      if (list[type] && list[type]->generic.is_visible)
+      if (!list[type] || !list[type]->generic.is_visible)
+       continue;
+      if (type == SRC_WIN || type == DISASSEM_WIN)
        {
-         if (type == SRC_WIN || type == DISASSEM_WIN)
-           {
-             touchwin (list[type]->detail.source_info.execution_info->handle);
-             tui_refresh_win (list[type]->detail.source_info.execution_info);
-           }
-         touchwin (list[type]->generic.handle);
-         tui_refresh_win (&list[type]->generic);
+         tui_refresh_wi (list[type]->detail.source_info.execution_info);
        }
+      tui_refresh_wi (&list[type]->generic);
     }
-  if (locator->is_visible)
-    {
-      touchwin (locator->handle);
-      tui_refresh_win (locator);
-    }
+
+  tui_refresh_wi (tui_locator_win_info_ptr ());
 }
 
 
diff -r e7fb67ecb9aa -r 2f3f47380212 external/gpl3/gdb/dist/gdb/tui/tui-winsource.c
--- a/external/gpl3/gdb/dist/gdb/tui/tui-winsource.c    Sun Dec 17 17:18:34 2017 +0000
+++ b/external/gpl3/gdb/dist/gdb/tui/tui-winsource.c    Sun Dec 17 17:49:04 2017 +0000
@@ -559,6 +559,9 @@
     = win_info->detail.source_info.execution_info;
   int cur_line;
 
+  if (exec_info->handle == NULL)
+    return;
+
   werase (exec_info->handle);
   tui_refresh_win (exec_info);
   for (cur_line = 1; (cur_line <= exec_info->content_size); cur_line++)
@@ -578,6 +581,9 @@
   struct tui_gen_win_info *exec_info
     = win_info->detail.source_info.execution_info;
 
+  if (exec_info->handle == NULL)
+    return;
+
   werase (exec_info->handle);
   tui_refresh_win (exec_info);
 }



Home | Main Index | Thread Index | Old Index