Changeset 932
- Timestamp:
- 06/26/2012 07:27:35 PM (11 months ago)
- Files:
-
- 1 modified
-
trunk/processor/hashtable.m4 (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/processor/hashtable.m4
r930 r932 5 5 dnl {{{ dasm 6 6 IFDASM(` 7 Bucket *b;7 const Bucket *srcBucket; 8 8 zval *zv; 9 9 int bufsize = 2; … … 34 34 35 35 DISABLECHECK(` 36 for ( b = src->pListHead; b != NULL; b = b->pListNext) {36 for (srcBucket = src->pListHead; srcBucket != NULL; srcBucket = srcBucket->pListNext) { 37 37 ALLOC_INIT_ZVAL(zv); 38 38 array_init(zv); 39 FUNC_NAME (dasm, zv, (($2*) b->pData) TSRMLS_CC);40 keysize = BUCKET_KEY_SIZE( b) + 2;39 FUNC_NAME (dasm, zv, (($2*)srcBucket->pData) TSRMLS_CC); 40 keysize = BUCKET_KEY_SIZE(srcBucket) + 2; 41 41 if (keysize > bufsize) { 42 42 do { … … 45 45 buf = erealloc(buf, bufsize); 46 46 } 47 memcpy(buf, BUCKET_KEY_S( b), keysize);47 memcpy(buf, BUCKET_KEY_S(srcBucket), keysize); 48 48 buf[keysize - 2] = buf[keysize - 1] = ""[0]; 49 keysize = b->nKeyLength;49 keysize = srcBucket->nKeyLength; 50 50 #ifdef IS_UNICODE 51 if (BUCKET_KEY_TYPE( b) == IS_UNICODE) {51 if (BUCKET_KEY_TYPE(srcBucket) == IS_UNICODE) { 52 52 if (buf[0] == ""[0] && buf[1] == ""[0]) { 53 53 keysize ++; … … 60 60 } 61 61 } 62 add_u_assoc_zval_ex(dst, BUCKET_KEY_TYPE( b), ZSTR(buf), keysize, zv);62 add_u_assoc_zval_ex(dst, BUCKET_KEY_TYPE(srcBucket), ZSTR(buf), keysize, zv); 63 63 } 64 64 ') … … 67 67 ', ` 68 68 dnl }}} 69 Bucket *b, *pnew = NULL, *prev = NULL; 69 Bucket *srcBucket; 70 Bucket *pnew = NULL, *prev = NULL; 70 71 zend_bool first = 1; 71 72 dnl only used for copy … … 94 95 DONE(arBuckets) 95 96 DISABLECHECK(` 96 for ( b = src->pListHead; b != NULL; b = b->pListNext) {97 for (srcBucket = src->pListHead; srcBucket != NULL; srcBucket = srcBucket->pListNext) { 97 98 ifelse($4, `', `', ` 98 pushdef(`BUCKET', ` b')99 pushdef(`BUCKET', `srcBucket') 99 100 if ($4 == ZEND_HASH_APPLY_REMOVE) { 100 101 IFCOPY(`dst->nNumOfElements --;') … … 104 105 ') 105 106 106 IFCALCCOPY(`bucketsize = BUCKET_SIZE( b);')107 IFCALCCOPY(`bucketsize = BUCKET_SIZE(srcBucket);') 107 108 ALLOC(pnew, char, bucketsize, , Bucket) 108 109 IFCOPY(` 109 110 #ifdef ZEND_ENGINE_2_4 110 memcpy(pnew, b, BUCKET_HEAD_SIZE(Bucket)); 111 memcpy((char *) (pnew + 1), b->arKey, BUCKET_KEY_SIZE(b)); 112 pnew->arKey = (const char *) (pnew + 1); 111 memcpy(pnew, srcBucket, BUCKET_HEAD_SIZE(Bucket)); 112 if (BUCKET_KEY_SIZE(srcBucket)) { 113 memcpy((char *) (pnew + 1), srcBucket->arKey, BUCKET_KEY_SIZE(srcBucket)); 114 pnew->arKey = (const char *) (pnew + 1); 115 } 116 else { 117 pnew->arKey = NULL; 118 } 113 119 #else 114 memcpy(pnew, b, bucketsize);115 #endif120 memcpy(pnew, srcBucket, bucketsize); 121 #endif 116 122 ') 117 123 IFCOPY(` 118 n = b->h & src->nTableMask;124 n = srcBucket->h & src->nTableMask; 119 125 /* pnew into hash node chain */ 120 126 pnew->pLast = NULL; … … 128 134 INDENT() 129 135 fprintf(stderr, "$2:\""); 130 xc_dprint_str_len(BUCKET_KEY_S( b), BUCKET_KEY_SIZE(b));131 fprintf(stderr, "\" %d:h=%lu ", BUCKET_KEY_SIZE( b), b->h);136 xc_dprint_str_len(BUCKET_KEY_S(srcBucket), BUCKET_KEY_SIZE(srcBucket)); 137 fprintf(stderr, "\" %d:h=%lu ", BUCKET_KEY_SIZE(srcBucket), srcBucket->h); 132 138 ') 133 139 if (sizeof(void *) == sizeof($2)) { 134 140 IFCOPY(`pnew->pData = &pnew->pDataPtr;') 135 141 dnl no alloc 136 STRUCT_P_EX(`$2', pnew->pData, (($2*) b->pData), `', `$3', ` ')142 STRUCT_P_EX(`$2', pnew->pData, (($2*)srcBucket->pData), `', `$3', ` ') 137 143 } 138 144 else { 139 STRUCT_P_EX(`$2', pnew->pData, (($2*) b->pData), `', `$3')145 STRUCT_P_EX(`$2', pnew->pData, (($2*)srcBucket->pData), `', `$3') 140 146 IFCOPY(`pnew->pDataPtr = NULL;') 141 147 }

