Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Tuples/TupleExpansion.cc

    rcdc4d43 raee472e  
    4646
    4747                        std::map< int, Expression * > decls; // not vector, because order added may not be increasing order
     48
     49                        ~UniqueExprExpander() {
     50                                for ( std::pair<const int, Expression *> & p : decls ) {
     51                                        delete p.second;
     52                                }
     53                        }
    4854                };
    4955
     
    106112                                UntypedMemberExpr * newMemberExpr = new UntypedMemberExpr( memberExpr->member, inner );
    107113                                inner->location = newMemberExpr->location = loc;
     114                                memberExpr->member = nullptr;
     115                                memberExpr->aggregate = nullptr;
     116                                delete memberExpr;
    108117                                return newMemberExpr->acceptMutator( expander );
    109118                        } else {
     
    125134                                expr->location = memberExpr->location;
    126135                        }
     136                        delete aggr;
    127137                        tupleExpr->location = memberExpr->location;
    128138                        return tupleExpr;
     
    170180                        decls[id] = condExpr;
    171181                }
     182                delete unqExpr;
    172183                return decls[id]->clone();
    173184        }
     
    179190                ret->set_env( assnExpr->get_env() );
    180191                assnExpr->set_env( nullptr );
     192                delete assnExpr;
    181193                return ret;
    182194        }
     
    209221                        newType->get_parameters().push_back( new TypeExpr( t->clone() ) );
    210222                }
     223                delete tupleType;
    211224                return newType;
    212225        }
     
    219232                TypeSubstitution * env = tupleExpr->env;
    220233                tupleExpr->env = nullptr;
     234                delete tupleExpr;
    221235
    222236                if ( TupleExpr * tupleExpr = dynamic_cast< TupleExpr * > ( tuple ) ) {
     
    228242                                ret->env = env;
    229243                                expr = nullptr; // remove from list so it can safely be deleted
     244                                delete tupleExpr;
    230245                                return ret;
    231246                        }
     
    272287                TypeSubstitution * env = tupleExpr->get_env();
    273288
    274                 // remove data from shell
     289                // remove data from shell and delete it
    275290                tupleExpr->set_result( nullptr );
    276291                tupleExpr->get_exprs().clear();
    277292                tupleExpr->set_env( nullptr );
     293                delete tupleExpr;
    278294
    279295                return replaceTupleExpr( result, exprs, env );
Note: See TracChangeset for help on using the changeset viewer.