changeset 25317:4a46c83bcb71 stable

don't hold reference to expression result after evaluation is done * pt-eval.h (tree_evaluator::evaluate, tree_evaluator::evaluate_n): Clear m_expr_result_value and m_expr_result_value_list after setting retval.
author John W. Eaton <jwe@octave.org>
date Thu, 26 Apr 2018 21:19:41 -0400
parents 60fd2d84c9a0
children b328ff3ce0f7
files libinterp/parse-tree/pt-eval.h
diffstat 1 files changed, 4 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-eval.h	Thu Apr 26 08:47:11 2018 +0200
+++ b/libinterp/parse-tree/pt-eval.h	Thu Apr 26 21:19:41 2018 -0400
@@ -309,11 +309,13 @@
 
         case RT_VALUE:
           retval = m_expr_result_value;
+          m_expr_result_value = octave_value ();
           break;
 
         case RT_VALUE_LIST:
           retval = (m_expr_result_value_list.empty ()
                     ? octave_value () : m_expr_result_value_list(0));
+          m_expr_result_value_list = octave_value_list ();
           break;
         }
 
@@ -338,10 +340,12 @@
 
         case RT_VALUE:
           retval = ovl (m_expr_result_value);
+          m_expr_result_value = octave_value ();
           break;
 
         case RT_VALUE_LIST:
           retval = m_expr_result_value_list;
+          m_expr_result_value_list = octave_value_list ();
           break;
         }