changeset 21589:ad90fb5a139f

eliminate memory leaks from classdef parse tree (bug #47372) * base-list.h (octave_base_list::~octave_base_list): Declare virtual. * oct-parse.in.yy (parse_fcn_file): Delete parser::classdef_object after meta class object is constructed.
author John W. Eaton <jwe@octave.org>
date Wed, 06 Apr 2016 10:54:31 -0400
parents 4c61f8313f58
children ec77a07e4220
files libinterp/parse-tree/oct-parse.in.yy liboctave/util/base-list.h
diffstat 2 files changed, 5 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/parse-tree/oct-parse.in.yy	Mon Apr 04 14:50:01 2016 -0400
+++ b/libinterp/parse-tree/oct-parse.in.yy	Wed Apr 06 10:54:31 2016 -0400
@@ -4201,6 +4201,10 @@
 
               fcn_ptr =
                 parser.classdef_object->make_meta_class (is_at_folder);
+
+              delete (parser.classdef_object);
+
+              parser.classdef_object = 0;
             }
           else if (fcn_ptr)
             {
--- a/liboctave/util/base-list.h	Mon Apr 04 14:50:01 2016 -0400
+++ b/liboctave/util/base-list.h	Wed Apr 06 10:54:31 2016 -0400
@@ -121,7 +121,7 @@
     return *this;
   }
 
-  ~octave_base_list (void) { }
+  virtual ~octave_base_list (void) { }
 
 private: