Changeset 1459 in svn


Ignore:
Timestamp:
2013-11-08T17:00:06Z (22 months ago)
Author:
Xuefer
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.