Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Concurrency/Waitfor.cc

    r08da53d rd67cdb7  
    190190
    191191                Statement * makeAccStatement( DeclarationWithType * object, unsigned long index, const std::string & member, Expression * value, const SymTab::Indexer & indexer ) {
    192                         Expression * expr = makeOpAssign(
     192                        std::unique_ptr< Expression > expr( makeOpAssign(
    193193                                makeOpMember(
    194194                                        makeOpIndex(
     
    199199                                ),
    200200                                value
    201                         );
    202 
    203                         ResolvExpr::findVoidExpression( expr, indexer );
    204 
    205                         return new ExprStmt( noLabels, expr );
     201                        ) );
     202
     203                        return new ExprStmt( noLabels, ResolvExpr::findVoidExpression( expr.get(), indexer ) );
    206204                }
    207205
     
    315313                stmt->push_back( new DeclStmt( noLabels, acceptables) );
    316314
    317                 Expression * set = new UntypedExpr(
     315                UntypedExpr * set = new UntypedExpr(
    318316                        new NameExpr( "__builtin_memset" ),
    319317                        {
     
    324322                );
    325323
    326                 ResolvExpr::findVoidExpression( set, indexer );
    327 
    328                 stmt->push_back( new ExprStmt( noLabels, set ) );
     324                Expression * resolved_set = ResolvExpr::findVoidExpression( set, indexer );
     325                delete set;
     326
     327                stmt->push_back( new ExprStmt( noLabels, resolved_set ) );
    329328
    330329                return acceptables;
     
    347346
    348347        Statement * GenerateWaitForPass::makeSetter( ObjectDecl * flag ) {
    349                 Expression * expr = new UntypedExpr(
     348                Expression * untyped = new UntypedExpr(
    350349                        new NameExpr( "?=?" ),
    351350                        {
     
    355354                );
    356355
    357                 ResolvExpr::findVoidExpression( expr, indexer );
     356                Expression * expr = ResolvExpr::findVoidExpression( untyped, indexer );
     357                delete untyped;
    358358
    359359                return new ExprStmt( noLabels, expr );
     
    379379                        new ListInit(
    380380                                map_range < std::list<Initializer*> > ( clause.target.arguments, [this](Expression * expr ){
    381                                         Expression * init = new CastExpr(
     381                                        Expression * untyped = new CastExpr(
    382382                                                new UntypedExpr(
    383383                                                        new NameExpr( "get_monitor" ),
     
    393393                                        );
    394394
    395                                         ResolvExpr::findSingleExpression( init, indexer );
     395                                        Expression * init = ResolvExpr::findSingleExpression( untyped, indexer );
     396                                        delete untyped;
    396397                                        return new SingleInit( init );
    397398                                })
Note: See TracChangeset for help on using the changeset viewer.