[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re:Re: Memory....
From: |
John W. Eaton |
Subject: |
Re:Re: Memory.... |
Date: |
Tue, 2 Sep 1997 08:47:13 -0500 |
On 2-Sep-1997, Stef Pillaert BK <address@hidden> wrote:
| I think I narrowed my problem (at last!) to the following:
| when I do something like
|
| for i=1:1000000
| eval("2;");
| endfor
|
| everything is O.K.
|
| But,
|
| for i=1:1000000
| eval("[2];");
| endfor
|
| makes the Size bigger and bigger. Is this normal?
| Shouldn't I use eval this way?
It's definitely a bug. Please try the following patch.
Thanks,
jwe
Tue Sep 2 08:43:32 1997 John W. Eaton <address@hidden>
* pt-mat.h (tree_matrix_row::preserve_expr): New private data.
(tree_matrix_row::~tree_matrix_row): Delete list contents.
(tree_matrix::~tree_matrix): Delete list contents.
* pt-mat.cc (tree_matrix_row::to_return_list): Set preserve_expr
to true if successful.
*** src/pt-mat.h~ Mon Nov 18 22:34:55 1996
--- src/pt-mat.h Tue Sep 2 08:29:04 1997
***************
*** 46,64 ****
{
public:
! tree_matrix_row (tree_expression *e = 0) : SLList<tree_expression *> ()
{
if (e)
append (e);
}
! ~tree_matrix_row (void) { }
bool all_elements_are_constant (void) const;
tree_return_list *to_return_list (void);
void accept (tree_walker& tw);
};
class
--- 46,77 ----
{
public:
! tree_matrix_row (tree_expression *e = 0)
! : SLList<tree_expression *> (), preserve_expr (false)
{
if (e)
append (e);
}
! ~tree_matrix_row (void)
! {
! if (! preserve_expr)
! while (! empty ())
! {
! tree_expression *e = remove_front ();
! delete e;
! }
! }
bool all_elements_are_constant (void) const;
tree_return_list *to_return_list (void);
void accept (tree_walker& tw);
+
+ private:
+
+ bool preserve_expr;
};
class
***************
*** 73,79 ****
append (mr);
}
! ~tree_matrix (void) { }
bool all_elements_are_constant (void) const;
--- 86,99 ----
append (mr);
}
! ~tree_matrix (void)
! {
! while (! empty ())
! {
! tree_matrix_row *mr = remove_front ();
! delete mr;
! }
! }
bool all_elements_are_constant (void) const;
*** src/pt-mat.cc~ Mon Jan 6 00:13:42 1997
--- src/pt-mat.cc Tue Sep 2 08:27:54 1997
***************
*** 439,444 ****
--- 439,447 ----
}
}
+ if (retval)
+ preserve_expr = true;
+
return retval;
}