Ignore:
Timestamp:
Aug 19, 2016, 5:04:59 PM (8 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
Children:
d30790f
Parents:
2037f82
Message:

fixed some more memory leaks and added safe_dynamic_cast to assert.h

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/ExpressionNode.cc

    r2037f82 r4f147cc  
    183183
    184184Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
    185         Type *targetType = decl_node->buildType();
     185        Type *targetType = maybeMoveBuildType( decl_node );
    186186        if ( dynamic_cast< VoidType * >( targetType ) ) {
    187187                delete targetType;
     
    213213}
    214214Expression *build_sizeOftype( DeclarationNode *decl_node ) {
    215         Expression* ret = new SizeofExpr( decl_node->buildType() );
    216         delete decl_node;
    217         return ret;
     215        return new SizeofExpr( maybeMoveBuildType( decl_node ) );
    218216}
    219217Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
     
    221219}
    222220Expression *build_alignOftype( DeclarationNode *decl_node ) {
    223         return new AlignofExpr( decl_node->buildType() );
     221        return new AlignofExpr( maybeMoveBuildType( decl_node) );
    224222}
    225223Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
    226         Expression* ret = new UntypedOffsetofExpr( decl_node->buildType(), member->get_name() );
    227         delete decl_node;
     224        Expression* ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
    228225        delete member;
    229226        return ret;
     
    269266}
    270267Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
    271         return new AttrExpr( var, decl_node->buildType() );
     268        return new AttrExpr( var, maybeMoveBuildType( decl_node ) );
    272269}
    273270
     
    296293}
    297294Expression *build_typevalue( DeclarationNode *decl ) {
    298         return new TypeExpr( decl->buildType() );
     295        return new TypeExpr( maybeMoveBuildType( decl ) );
    299296}
    300297
Note: See TracChangeset for help on using the changeset viewer.