changeset 31601:132547cc1ab2 stable

don't return invalid settings pointer from resource manager (bug #63437) * resource-manager.cc (resource_manager::get_settings): Display message box and exit if m_settings is nullptr. (resource_manager::get_settings): Likewise, for m_default_settings.
author John W. Eaton <jwe@octave.org>
date Thu, 01 Dec 2022 15:00:07 -0500
parents 50a225732661
children 16fb0e3e6aab 23520a50d74d
files libgui/src/resource-manager.cc
diffstat 1 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/resource-manager.cc	Thu Dec 01 12:50:48 2022 -0500
+++ b/libgui/src/resource-manager.cc	Thu Dec 01 15:00:07 2022 -0500
@@ -231,11 +231,37 @@
 
   gui_settings * resource_manager::get_settings (void) const
   {
+    if (! m_settings)
+      {
+        QString msg (QT_TR_NOOP ("Octave has lost its settings.\n"
+                                 "This should not happen.\n\n"
+                                 "Please report this bug.\n\n"
+                                 "Octave GUI must be closed now."));
+
+        QMessageBox::critical (nullptr,
+                               QString (QT_TR_NOOP ("Octave Critical Error")),
+                               msg);
+        exit (1);
+      }
+
     return m_settings;
   }
 
   gui_settings * resource_manager::get_default_settings (void) const
   {
+    if (m_settings)
+      {
+        QString msg (QT_TR_NOOP ("Octave has lost its default settings.\n"
+                                 "This should not happen.\n"
+                                 "Please report this bug.\n\n"
+                                 "Octave GUI must be closed now."));
+
+        QMessageBox::critical (nullptr,
+                               QString (QT_TR_NOOP ("Octave Critical Error")),
+                               msg);
+        exit (1);
+      }
+
     return m_default_settings;
   }