Changes in src/InitTweak/FixInit.cc [68f9c43:b8baa37]
- File:
-
- 1 edited
-
src/InitTweak/FixInit.cc (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/FixInit.cc
r68f9c43 rb8baa37 454 454 resolved->env = nullptr; 455 455 } // if 456 delete stmt; 456 457 if ( TupleAssignExpr * assign = dynamic_cast< TupleAssignExpr * >( resolved ) ) { 457 458 // fix newly generated StmtExpr … … 553 554 result = result->clone(); 554 555 env->apply( result ); 555 if ( ! InitTweak::isConstructable( result ) ) return; 556 if ( ! InitTweak::isConstructable( result ) ) { 557 delete result; 558 return; 559 } 556 560 557 561 // create variable that will hold the result of the stmt expr … … 648 652 std::swap( impCpCtorExpr->env, callExpr->env ); 649 653 assert( impCpCtorExpr->env == nullptr ); 654 delete impCpCtorExpr; 650 655 651 656 if ( returnDecl ) { … … 706 711 if ( unqMap.count( unqExpr->get_id() ) ) { 707 712 // take data from other UniqueExpr to ensure consistency 713 delete unqExpr->get_expr(); 708 714 unqExpr->set_expr( unqMap[unqExpr->get_id()]->get_expr()->clone() ); 715 delete unqExpr->get_result(); 709 716 unqExpr->set_result( maybeClone( unqExpr->get_expr()->get_result() ) ); 710 717 if ( unqCount[ unqExpr->get_id() ] == 0 ) { // insert destructor after the last use of the unique expression … … 817 824 // create a new object which is never used 818 825 static UniqueName dummyNamer( "_dummy" ); 819 return new ObjectDecl{ 820 dummyNamer.newName(), Type::StorageClasses( Type::Static ), LinkageSpec::Cforall, 0, 821 new PointerType{ Type::Qualifiers(), new VoidType( Type::Qualifiers() ) }, 822 0, std::list< Attribute * >{ new Attribute("unused") } }; 826 ObjectDecl * dummy = new ObjectDecl( dummyNamer.newName(), Type::StorageClasses( Type::Static ), LinkageSpec::Cforall, 0, new PointerType( Type::Qualifiers(), new VoidType( Type::Qualifiers() ) ), 0, std::list< Attribute * >{ new Attribute("unused") } ); 827 delete ctorInit; 828 return dummy; 823 829 } 824 830 } else { … … 846 852 objDecl->init = nullptr; 847 853 } // if 854 delete ctorInit; 848 855 } // if 849 856 return objDecl; … … 1221 1228 ObjectDecl * tmp = ObjectDecl::newObject( tempNamer.newName(), callExpr->args.front()->result->clone(), nullptr ); 1222 1229 declsToAddBefore.push_back( tmp ); 1230 delete ctorExpr; 1223 1231 1224 1232 // build assignment and replace constructor's first argument with new temporary … … 1229 1237 // resolve assignment and dispose of new env 1230 1238 ResolvExpr::findVoidExpression( assign, indexer ); 1239 delete assign->env; 1231 1240 assign->env = nullptr; 1232 1241
Note:
See TracChangeset
for help on using the changeset viewer.