diff libinterp/parse-tree/oct-parse.yy @ 16115:4f6c37cfbdce

cleanup lexical_feedback objects * lex.h (lexical_feedback::cleanup): New static member function. * oct-parse.yy (eval_string, parse_fcn_file): Put new clenup function on unwind-protect stack to delete lexer object. * input.cc (get_debug_input): Likewise. * toplev.cc (main_loop): Likewise.
author John W. Eaton <jwe@octave.org>
date Tue, 26 Feb 2013 10:58:33 -0500
parents 7c5e5e97a3bc
children 6884401b2fbb
line wrap: on
line diff
--- a/libinterp/parse-tree/oct-parse.yy	Tue Feb 26 02:52:48 2013 -0500
+++ b/libinterp/parse-tree/oct-parse.yy	Tue Feb 26 10:58:33 2013 -0500
@@ -3500,8 +3500,8 @@
       bool eof;
 
       frame.protect_var (curr_lexer);
-
       curr_lexer = new lexical_feedback ();
+      frame.add_fcn (lexical_feedback::cleanup, curr_lexer);
 
       reset_parser ();
 
@@ -4306,6 +4306,8 @@
   unwind_protect frame;
 
   frame.protect_var (curr_lexer);
+  curr_lexer = new lexical_feedback ();
+  frame.add_fcn (lexical_feedback::cleanup, curr_lexer);
 
   frame.protect_var (get_input_from_eval_string);
   frame.protect_var (line_editing);
@@ -4319,8 +4321,6 @@
   frame.protect_var (reading_script_file);
   frame.protect_var (reading_classdef_file);
 
-  curr_lexer = new lexical_feedback ();
-
   get_input_from_eval_string = true;
   line_editing = false;
   current_function_depth = 0;