changeset 31555:9d0d37acafbe stable

delete m_evaluator after m_output_system (bug #63416) * interpreter.h, interpreter.cc (class interpreter): Move m_evaluator ahead of m_output_system in list of data members so that the tree_evaluator object will still be valid when the output_system object is deleted.
author John W. Eaton <jwe@octave.org>
date Sat, 26 Nov 2022 17:05:21 -0500
parents d244411aaaab
children 9978ef12aea3
files libinterp/corefcn/interpreter.cc libinterp/corefcn/interpreter.h
diffstat 2 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/interpreter.cc	Sat Nov 26 18:50:58 2022 +0100
+++ b/libinterp/corefcn/interpreter.cc	Sat Nov 26 17:05:21 2022 -0500
@@ -459,6 +459,7 @@
       m_environment (),
       m_settings (),
       m_error_system (*this),
+      m_evaluator (*this),
       m_help_system (*this),
       m_input_system (*this),
       m_output_system (*this),
@@ -468,7 +469,6 @@
       m_load_save_system (*this),
       m_type_info (),
       m_symbol_table (*this),
-      m_evaluator (*this),
       m_stream_list (*this),
       m_child_list (),
       m_url_handle_manager (),
--- a/libinterp/corefcn/interpreter.h	Sat Nov 26 18:50:58 2022 +0100
+++ b/libinterp/corefcn/interpreter.h	Sat Nov 26 17:05:21 2022 -0500
@@ -253,6 +253,8 @@
       return m_error_system;
     }
 
+    tree_evaluator& get_evaluator (void);
+
     help_system& get_help_system (void)
     {
       return m_help_system;
@@ -298,8 +300,6 @@
       return m_symbol_table;
     }
 
-    tree_evaluator& get_evaluator (void);
-
     symbol_scope get_top_scope (void) const;
     symbol_scope get_current_scope (void) const;
     symbol_scope require_current_scope (const std::string& who) const;
@@ -586,6 +586,8 @@
 
     error_system m_error_system;
 
+    tree_evaluator m_evaluator;
+
     help_system m_help_system;
 
     input_system m_input_system;
@@ -604,8 +606,6 @@
 
     symbol_table m_symbol_table;
 
-    tree_evaluator m_evaluator;
-
     stream_list m_stream_list;
 
     child_list m_child_list;