Changeset 1459


Ignore:
Timestamp:
2013-11-08T18:00:06+01:00 (14 months ago)
Author:
moo
Message:

ws fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/hashtable.m4

    r1446 r1459  
    11dnl DEF_HASH_TABLE_FUNC(1:name, 2:datatype [, 3:dataname]) 
    2 define(`DEF_HASH_TABLE_FUNC', ` 
    3     DEF_STRUCT_P_FUNC(`HashTable', `$1', ` 
    4         pushdefFUNC_NAME(`$2', `$3') 
    5         dnl {{{ dasm 
    6         IFDASM(` 
    7             const Bucket *srcBucket; 
    8             zval *zv; 
    9             int bufsize = 2; 
    10             char *buf = emalloc(bufsize); 
    11             int keysize; 
     2define(`DEF_HASH_TABLE_FUNC', `DEF_STRUCT_P_FUNC(`HashTable', `$1', ` 
     3    pushdefFUNC_NAME(`$2', `$3') 
     4    dnl {{{ dasm 
     5    IFDASM(` 
     6        const Bucket *srcBucket; 
     7        zval *zv; 
     8        int bufsize = 2; 
     9        char *buf = emalloc(bufsize); 
     10        int keysize; 
    1211 
    13             define(`AUTOCHECK_SKIP') 
    14             IFAUTOCHECK(`xc_autocheck_skip = 1;') 
     12        define(`AUTOCHECK_SKIP') 
     13        IFAUTOCHECK(`xc_autocheck_skip = 1;') 
    1514 
    16             DISABLECHECK(` 
    17             for (srcBucket = SRC(`pListHead'); srcBucket != NULL; srcBucket = srcBucket->pListNext) { 
    18                 ALLOC_INIT_ZVAL(zv); 
    19                 array_init(zv); 
    20                 FUNC_NAME (dasm, zv, (($2*)srcBucket->pData) TSRMLS_CC); 
    21                 keysize = BUCKET_KEY_SIZE(srcBucket) + 2; 
    22                 if (keysize > bufsize) { 
    23                     do { 
    24                         bufsize *= 2; 
    25                     } while (keysize > bufsize); 
    26                     buf = erealloc(buf, bufsize); 
     15        DISABLECHECK(` 
     16        for (srcBucket = SRC(`pListHead'); srcBucket != NULL; srcBucket = srcBucket->pListNext) { 
     17            ALLOC_INIT_ZVAL(zv); 
     18            array_init(zv); 
     19            FUNC_NAME (dasm, zv, (($2*)srcBucket->pData) TSRMLS_CC); 
     20            keysize = BUCKET_KEY_SIZE(srcBucket) + 2; 
     21            if (keysize > bufsize) { 
     22                do { 
     23                    bufsize *= 2; 
     24                } while (keysize > bufsize); 
     25                buf = erealloc(buf, bufsize); 
     26            } 
     27            memcpy(buf, BUCKET_KEY_S(srcBucket), keysize); 
     28            buf[keysize - 2] = buf[keysize - 1] = ""[0]; 
     29            keysize = srcBucket->nKeyLength; 
     30#ifdef IS_UNICODE 
     31            if (BUCKET_KEY_TYPE(srcBucket) == IS_UNICODE) { 
     32                if (buf[0] == ""[0] && buf[1] == ""[0]) { 
     33                    keysize ++; 
    2734                } 
    28                 memcpy(buf, BUCKET_KEY_S(srcBucket), keysize); 
    29                 buf[keysize - 2] = buf[keysize - 1] = ""[0]; 
    30                 keysize = srcBucket->nKeyLength; 
    31 #ifdef IS_UNICODE 
    32                 if (BUCKET_KEY_TYPE(srcBucket) == IS_UNICODE) { 
    33                     if (buf[0] == ""[0] && buf[1] == ""[0]) { 
    34                         keysize ++; 
    35                     } 
    36                 } else 
     35            } else 
    3736#endif 
    38                 { 
    39                     if (buf[0] == ""[0]) { 
    40                         keysize ++; 
    41                     } 
     37            { 
     38                if (buf[0] == ""[0]) { 
     39                    keysize ++; 
    4240                } 
    43                 add_u_assoc_zval_ex(dst, BUCKET_KEY_TYPE(srcBucket), ZSTR(buf), keysize, zv); 
    4441            } 
    45             ') 
     42            add_u_assoc_zval_ex(dst, BUCKET_KEY_TYPE(srcBucket), ZSTR(buf), keysize, zv); 
     43        } 
     44        ') 
    4645 
    47             efree(buf); 
    48         ', ` dnl IFDASM else 
    49         dnl }}} 
    50         Bucket *srcBucket; 
    51         IFCOPY(`Bucket *dstBucket = NULL, *prev = NULL;') 
    52         zend_bool first = 1; 
    53         dnl only used for copy 
    54         IFCOPY(`uint n;') 
    55         IFCALCCOPY(`size_t bucketsize;') 
     46        efree(buf); 
     47    ', ` dnl IFDASM else 
     48    dnl }}} 
     49    Bucket *srcBucket; 
     50    IFCOPY(`Bucket *dstBucket = NULL, *prev = NULL;') 
     51    zend_bool first = 1; 
     52    dnl only used for copy 
     53    IFCOPY(`uint n;') 
     54    IFCALCCOPY(`size_t bucketsize;') 
    5655 
    5756#if defined(HARDENING_PATCH_HASH_PROTECT) && HARDENING_PATCH_HASH_PROTECT 
    58         IFRESTORE(`DST(`canary') = zend_hash_canary; DONE(canary)', ` 
    59             dnl else 
    60             PROCESS(unsigned int, canary) 
    61         ') 
     57    IFRESTORE(` 
     58        DST(`canary') = zend_hash_canary; 
     59        DONE(canary) 
     60    ', ` 
     61        PROCESS(unsigned int, canary) 
     62    ') 
    6263#endif 
    63         PROCESS(uint, nTableSize) 
    64         PROCESS(uint, nTableMask) 
    65         PROCESS(uint, nNumOfElements) 
    66         PROCESS(ulong, nNextFreeElement) 
    67         IFCOPY(`DST(`pInternalPointer') = NULL; /* Used for element traversal */') DONE(pInternalPointer) 
    68         IFCOPY(`DST(`pListHead') = NULL;') DONE(pListHead) 
     64    PROCESS(uint, nTableSize) 
     65    PROCESS(uint, nTableMask) 
     66    PROCESS(uint, nNumOfElements) 
     67    PROCESS(ulong, nNextFreeElement) 
     68    IFCOPY(`DST(`pInternalPointer') = NULL; /* Used for element traversal */') DONE(pInternalPointer) 
     69    IFCOPY(`DST(`pListHead') = NULL;') DONE(pListHead) 
    6970#ifdef ZEND_ENGINE_2_4 
    7071    if (SRC(`nTableMask')) { 
     
    142143    } 
    143144#endif 
    144         IFCOPY(`DST(`pListTail') = dstBucket;') DONE(pListTail) 
    145         IFCOPY(`DST(`pDestructor') = SRC(`pDestructor');') DONE(pDestructor) 
    146         PROCESS(zend_bool, persistent) 
     145    IFCOPY(`DST(`pListTail') = dstBucket;') DONE(pListTail) 
     146    IFCOPY(`DST(`pDestructor') = SRC(`pDestructor');') DONE(pDestructor) 
     147    PROCESS(zend_bool, persistent) 
    147148#ifdef IS_UNICODE 
    148         PROCESS(zend_bool, unicode) 
     149    PROCESS(zend_bool, unicode) 
    149150#endif 
    150         PROCESS(unsigned char, nApplyCount) 
    151         PROCESS(zend_bool, bApplyProtection) 
     151    PROCESS(unsigned char, nApplyCount) 
     152    PROCESS(zend_bool, bApplyProtection) 
    152153#if ZEND_DEBUG 
    153         PROCESS(int, inconsistent) 
     154    PROCESS(int, inconsistent) 
    154155#endif 
    155         ')dnl IFDASM 
    156         popdef(`FUNC_NAME') 
    157     ') 
    158 ') 
     156    ')dnl IFDASM 
     157    popdef(`FUNC_NAME') 
     158')') 
Note: See TracChangeset for help on using the changeset viewer.