Mercurial > octave
diff libinterp/parse-tree/pt-colon.h @ 23655:bbcc1e08aaed
improve colon expression construction and avoid possible memory leak
Don't allow errors to be thrown during colon expression construction.
* pt-colon.h, pt-colon.cc (tree_colon_expression::tree_colon_expression):
Construct either two- or three-element expressions.
(tree_colon_expression::append): Delete.
(tree_colon_expression::line, tree_colon_expression::colum): Delete.
* parse.h, oct-parse.in.yy (base_parser::make_colon_expression):
New function.
(base_parser::finish_colon_expression): Delete.
(colon_expr1): Delete non-terminal
(tree_colon_expression_type): Delete.
(colon_expr): Construct two- or three-element expressions only.
(simple_expr): Handle single oper_expr separately here.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 20 Jun 2017 10:25:54 -0400 |
parents | be7b884ac589 |
children | 980f39c3ab90 |
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-colon.h Tue Jun 20 09:28:48 2017 -0400 +++ b/libinterp/parse-tree/pt-colon.h Tue Jun 20 10:25:54 2017 -0400 @@ -46,8 +46,9 @@ : tree_expression (l, c), op_base (0), op_limit (0), op_increment (0), save_base (false) { } - tree_colon_expression (tree_expression *e, int l = -1, int c = -1) - : tree_expression (l, c), op_base (e), op_limit (0), + tree_colon_expression (tree_expression *bas, tree_expression *lim, + int l = -1, int c = -1) + : tree_expression (l, c), op_base (bas), op_limit (lim), op_increment (0), save_base (false) { } tree_colon_expression (tree_expression *bas, tree_expression *lim, @@ -79,8 +80,6 @@ void preserve_base (void) { save_base = true; } - tree_colon_expression * append (tree_expression *t); - bool rvalue_ok (void) const { return true; } void eval_error (const std::string& s) const; @@ -91,9 +90,6 @@ tree_expression * increment (void) { return op_increment; } - int line (void) const; - int column (void) const; - tree_expression * dup (symbol_table::scope& scope) const; void accept (tree_walker& tw)