Garbage collecting the EqcInfo s in TheoryDatatypes::d_eqc_info.
authorTim King <taking@google.com>
Wed, 23 Mar 2016 04:09:55 +0000 (21:09 -0700)
committerTim King <taking@google.com>
Wed, 23 Mar 2016 04:09:55 +0000 (21:09 -0700)
src/theory/datatypes/theory_datatypes.cpp
src/theory/datatypes/theory_datatypes.h

index 26ca50897daff84ff7de5a3d3978dbec74888fab..8123fe39cec219e85157870034a24d6f99e14cd8 100644 (file)
@@ -75,6 +75,12 @@ TheoryDatatypes::TheoryDatatypes(Context* c, UserContext* u, OutputChannel& out,
 }
 
 TheoryDatatypes::~TheoryDatatypes() {
+  for(std::map< Node, EqcInfo* >::iterator i = d_eqc_info.begin(), iend = d_eqc_info.end();
+      i != iend; ++i){
+    EqcInfo* current = (*i).second;
+    Assert(current != NULL);
+    delete current;
+  }
 }
 
 void TheoryDatatypes::setMasterEqualityEngine(eq::EqualityEngine* eq) {
@@ -91,7 +97,7 @@ TheoryDatatypes::EqcInfo* TheoryDatatypes::getOrMakeEqcInfo( TNode n, bool doMak
 
       std::map< Node, EqcInfo* >::iterator eqc_i = d_eqc_info.find( n );
       EqcInfo* ei;
-      if( eqc_i!=d_eqc_info.end() ){
+      if( eqc_i != d_eqc_info.end() ){
         ei = eqc_i->second;
       }else{
         ei = new EqcInfo( getSatContext() );
@@ -901,10 +907,11 @@ void TheoryDatatypes::eqNotifyDisequal(TNode t1, TNode t2, TNode reason){
 
 }
 
-TheoryDatatypes::EqcInfo::EqcInfo( context::Context* c ) :
-d_inst( c, false ), d_constructor( c, Node::null() ), d_selectors( c, false ){
-
-}
+TheoryDatatypes::EqcInfo::EqcInfo( context::Context* c )
+    : d_inst( c, false )
+    , d_constructor( c, Node::null() )
+    , d_selectors( c, false )
+{}
 
 bool TheoryDatatypes::hasLabel( EqcInfo* eqc, Node n ){
   return ( eqc && !eqc->d_constructor.get().isNull() ) || !getLabel( n ).isNull();
index 0f110b36949f9ea7ba67ab60506ecb49fdb48eb5..0a038f0edb4137d51ef222dab3921f33e5106602 100644 (file)
@@ -133,8 +133,8 @@ private:
   void getPossibleCons( EqcInfo* eqc, Node n, std::vector< bool >& cons );
   void getSelectorsForCons( Node r, std::map< int, bool >& sels );
   /** mkExpDefSkolem */
-  void mkExpDefSkolem( Node sel, TypeNode dt, TypeNode rt );  
-  /** skolems for terms */  
+  void mkExpDefSkolem( Node sel, TypeNode dt, TypeNode rt );
+  /** skolems for terms */
   NodeMap d_term_sk;
   Node getTermSkolemFor( Node n );
 private: