Changeset 646


Ignore:
Timestamp:
2009-07-08T06:40:03+02:00 (5 years ago)
Author:
moo
Message:

merged r645 from trunk

Location:
branches/1.3
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

    • Property svn:mergeinfo changed
      /trunkmerged: 645
  • branches/1.3/processor/head.m4

    r622 r646  
    130130/* {{{ xc_calc_string_n */ 
    131131REDEF(`KIND', `calc') 
    132 static inline void xc_calc_string_n(xc_processor_t *processor, zend_uchar type, zstr str, long size IFASSERT(`, int relayline')) { 
     132static inline void xc_calc_string_n(xc_processor_t *processor, zend_uchar type, const zstr str, long size IFASSERT(`, int relayline')) { 
    133133    pushdef(`__LINE__', `relayline') 
    134134    int realsize = UNISW(size, (type == IS_UNICODE) ? UBYTES(size) : size); 
     
    152152/* {{{ xc_store_string_n */ 
    153153REDEF(`KIND', `store') 
    154 static inline zstr xc_store_string_n(xc_processor_t *processor, zend_uchar type, zstr str, long size IFASSERT(`, int relayline')) { 
     154static inline zstr xc_store_string_n(xc_processor_t *processor, zend_uchar type, const zstr str, long size IFASSERT(`, int relayline')) { 
    155155    pushdef(`__LINE__', `relayline') 
    156156    int realsize = UNISW(size, (type == IS_UNICODE) ? UBYTES(size) : size); 
  • branches/1.3/processor/processor.m4

    r644 r646  
    220220DEF_STRUCT_P_FUNC(`zend_arg_info', , ` 
    221221    DISPATCH(zend_uint, name_len) 
    222     COPY(name) 
     222    PROC_ZSTRING_L(, name, name_len) 
    223223    DISPATCH(zend_uint, class_name_len) 
    224     COPY(class_name) 
     224    PROC_ZSTRING_L(, class_name, class_name_len) 
    225225    DISPATCH(zend_bool, array_type_hint) 
    226226    DISPATCH(zend_bool, allow_null) 
  • branches/1.3/processor/string.m4

    r622 r646  
    2121            STRTYPE, `zstr_char',  `ZSTR_S($1)', 
    2222            `',      `',           `$1')) 
     23    pushdef(`U', ifelse( 
     24            PTRTYPE, `char',  `', 
     25            PTRTYPE, `UChar', `u')) 
    2326    if (SRCPTR == NULL) { 
    2427        IFNOTMEMCPY(`IFCOPY(` 
     
    5659            ') 
    5760        ') 
    58         IFCALC(`xc_calc_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__'));') 
    59         IFSTORE(`DSTPTR = ifelse(PTRTYPE,`char',`ZSTR_S',`ZSTR_U')(xc_store_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__')));') 
     61        IFCALC(`xc_calc_string_n(processor, ISTYPE, ZSTR(SRCSTR), $3 IFASSERT(`, __LINE__'));') 
     62        IFSTORE(`DSTPTR = ifelse(PTRTYPE,`char',`ZSTR_S',`ZSTR_U')(xc_store_string_n(processor, ISTYPE, ZSTR(SRCSTR), $3 IFASSERT(`, __LINE__')));') 
    6063        IFRESTORE(` 
    61             ALLOC(DSTPTR, `STRTYPE', `($3)') 
    62             memcpy(DSTPTR, SRCPTR, sizeof(STRTYPE) * ($3)); 
     64            DSTPTR = e`'U`'strndup(SRCPTR, ($3) - 1); 
    6365        ') 
    6466        FIXPOINTER_EX(`PTRTYPE', DSTPTR) 
     
    7577        ') 
    7678    } 
     79    popdef(`U') 
    7780    popdef(`DSTPTR') 
    7881    popdef(`SRCPTR') 
Note: See TracChangeset for help on using the changeset viewer.