Ignore:
Timestamp:
2014-05-27T16:34:07+02:00 (7 months ago)
Author:
moo
Message:

PHP_5_6: finish support for zend_ast

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/processor.m4

    r1486 r1487  
    7171#endif 
    7272#ifdef IS_CONSTANT_AST 
    73 define(`ZEND_AST_HELPER', ` 
    74     { 
     73define(`ZEND_AST_HELPER', `dnl {{{ 
     74{ 
    7575    IFCALCCOPY(` 
    76         size_t zend_ast_size = $1->kind == ZEND_CONST 
     76        size_t zend_ast_size = ($1->kind == ZEND_CONST) 
    7777         ? sizeof(zend_ast) + sizeof(zval) 
    7878         : sizeof(zend_ast) + sizeof(zend_ast *) * ($1->children - 1); 
     
    8282    $2 
    8383    popdef(`ALLOC_SIZE_HELPER') 
    84     } 
    85 ') 
     84} 
     85') 
     86dnl }}} 
    8687DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{ 
    8788        zend_ushort i; 
     
    9394                assert(SRC()->u.val); 
    9495                IFCOPY(` 
     96                    DST()->u.val = (zval *) (DST() + 1); 
    9597                    memcpy(DST()->u.val, SRC()->u.val, sizeof(zval)); 
    9698                ') 
     
    101103                for (i = 0; i < SRC()->children; ++i) { 
    102104                    zend_ast *src_ast = (&SRC()->u.child)[i]; 
    103                     ALLOC(`(&DST()->u.child)[i]', zend_ast) 
    104                     ZEND_AST_HELPER(`src_ast', `STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')') 
    105                     RELOCATE_EX(zend_ast, (&DST()->u.child)[i]) 
     105                    if (src_ast) { 
     106                        ZEND_AST_HELPER(`src_ast', ` 
     107                            ALLOC(`(&DST()->u.child)[i]', zend_ast) 
     108                            STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ') 
     109                        ') 
     110                        RELOCATE_EX(zend_ast, (&DST()->u.child)[i]) 
     111                    } 
     112                    else { 
     113                        COPYNULL_EX(`(&DST()->u.child)[i]') 
     114                    } 
    106115                } 
    107116            } 
Note: See TracChangeset for help on using the changeset viewer.