changeset 32225:fe19c03876a1

gui: Check if pointers are valid before dereferencing them. * libgui/src/octave-qobject.cc (~base_qobject): Check if objects referred to by QPointer are still valid before calling deleteLater.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 01 Aug 2023 19:43:19 +0200
parents 592adc6b8901
children 1ce9acf56351
files libgui/src/octave-qobject.cc
diffstat 1 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/octave-qobject.cc	Tue Aug 01 13:17:41 2023 -0400
+++ b/libgui/src/octave-qobject.cc	Tue Aug 01 19:43:19 2023 +0200
@@ -362,14 +362,22 @@
         m_community_news->close ();
     }
 
-  m_terminal_widget.data ()->deleteLater ();
-  m_documentation_widget.data ()->deleteLater ();
-  m_file_browser_widget.data ()->deleteLater ();
-  m_history_widget.data ()->deleteLater ();
-  m_workspace_widget.data ()->deleteLater ();
-  m_editor_widget.data ()->deleteLater ();
-  m_variable_editor_widget.data ()->deleteLater ();
-  m_community_news.data ()->deleteLater ();
+  if (m_terminal_widget)
+    m_terminal_widget->deleteLater ();
+  if (m_documentation_widget)
+    m_documentation_widget->deleteLater ();
+  if (m_file_browser_widget)
+    m_file_browser_widget->deleteLater ();
+  if (m_history_widget)
+    m_history_widget->deleteLater ();
+  if (m_workspace_widget)
+    m_workspace_widget->deleteLater ();
+  if (m_editor_widget)
+    m_editor_widget->deleteLater ();
+  if (m_variable_editor_widget)
+    m_variable_editor_widget->deleteLater ();
+  if (m_community_news)
+    m_community_news->deleteLater ();
 
   delete m_interpreter_qobj;
   delete m_qsci_tr;
@@ -377,7 +385,8 @@
   delete m_qt_tr;
   delete m_workspace_model;
 
-  m_main_window->deleteLater ();
+  if (m_main_window)
+    m_main_window->deleteLater ();
 
   delete m_qapplication;