# HG changeset patch # User John W. Eaton # Date 1459954471 14400 # Node ID ad90fb5a139f9c290415da7c09853e3614d8cf9b # Parent 4c61f8313f582b9e5fdaa2d36d81b5bf3933019a 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. diff -r 4c61f8313f58 -r ad90fb5a139f libinterp/parse-tree/oct-parse.in.yy --- 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) { diff -r 4c61f8313f58 -r ad90fb5a139f liboctave/util/base-list.h --- 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: