help-octave
[Top][All Lists]
Advanced

[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;
  }
  




reply via email to

[Prev in Thread] Current Thread [Next in Thread]