# HG changeset patch # User jwe # Date 780939054 0 # Node ID 09d3f476c85b36080391047469ff997966cdbc42 # Parent 93910a7bbdf24d5ae5b571f5733382979a9f2b72 [project @ 1994-09-30 15:30:33 by jwe] diff --git a/src/pt-exp-base.cc b/src/pt-exp-base.cc --- a/src/pt-exp-base.cc +++ b/src/pt-exp-base.cc @@ -1027,7 +1027,8 @@ delete [] t; } - delete id; + if (! preserve_ident) + delete id; } tree_indirect_ref * diff --git a/src/pt-exp-base.h b/src/pt-exp-base.h --- a/src/pt-exp-base.h +++ b/src/pt-exp-base.h @@ -319,11 +319,17 @@ { public: tree_indirect_ref (int l = -1, int c = -1) : tree_fvc (l, c) - { id = 0; } + { + id = 0; + preserve_ident = 0; + } tree_indirect_ref (tree_identifier *i, int l = -1, int c = -1) : tree_fvc (l, c) - { id = i; } + { + id = i; + preserve_ident = 0; + } ~tree_indirect_ref (void); @@ -338,6 +344,9 @@ tree_identifier *ident (void) { return id; } + void preserve_identifier (void) + { preserve_ident = 1; } + char *name (void); tree_constant assign (tree_constant& t); @@ -355,6 +364,7 @@ private: tree_identifier *id; SLList refs; + int preserve_ident; }; // Index expressions.