com php-src: Revert "Add helper function for updating bucket contents": Zend/zend_hash.c

From: Date: Fri, 21 Mar 2014 00:32:49 +0000
Subject: com php-src: Revert "Add helper function for updating bucket contents": Zend/zend_hash.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-76565@lists.php.net to get a copy of this message
Commit: f331ed14143e78afe409018b00b19b05ed35c122 Author: Nikita Popov <nikic@php.net> Fri, 21 Mar 2014 01:32:49 +0100 Parents: 4e7e301dda2fa081c1310279b027a2350c05801e Branches: PHP-5.6 master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f331ed14143e78afe409018b00b19b05ed35c122 Log: Revert "Add helper function for updating bucket contents" Reverting this for now, because it would require further changes thanks to the zend signals tsrms-but-only-sometimes awesomeness. Changed paths: M Zend/zend_hash.c Diff: diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index aa3587c..135d3c3 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -141,21 +141,6 @@ ZEND_API ulong zend_hash_func(const char *arKey, uint nKeyLength) static const Bucket *uninitialized_bucket = NULL; -static inline void zend_hash_bucket_update( - const HashTable *ht, Bucket *p, void *pData, uint nDataSize, void **pDest ZEND_FILE_LINE_DC -) { - ZEND_ASSERT(p->pData != pData); - HANDLE_BLOCK_INTERRUPTIONS(); - if (ht->pDestructor) { - ht->pDestructor(p->pData); - } - UPDATE_DATA(ht, p, pData, nDataSize); - HANDLE_UNBLOCK_INTERRUPTIONS(); - if (pDest) { - *pDest = p->pData; - } -} - static zend_always_inline void i_zend_hash_bucket_delete(HashTable *ht, Bucket *p) { #ifdef ZEND_SIGNALS @@ -269,14 +254,21 @@ ZEND_API int _zend_hash_add_or_update(HashTable *ht, const char *arKey, uint nKe p = ht->arBuckets[nIndex]; while (p != NULL) { if (p->arKey == arKey || - ((p->h == h) && (p->nKeyLength == nKeyLength) - && !memcmp(p->arKey, arKey, nKeyLength)) - ) { - if (flag & HASH_ADD) { - return FAILURE; - } - zend_hash_bucket_update(ht, p, pData, nDataSize, pDest ZEND_FILE_LINE_RELAY_CC); - return SUCCESS; + ((p->h == h) && (p->nKeyLength == nKeyLength) && !memcmp(p->arKey, arKey, nKeyLength))) { + if (flag & HASH_ADD) { + return FAILURE; + } + ZEND_ASSERT(p->pData != pData); + HANDLE_BLOCK_INTERRUPTIONS(); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } + UPDATE_DATA(ht, p, pData, nDataSize); + if (pDest) { + *pDest = p->pData; + } + HANDLE_UNBLOCK_INTERRUPTIONS(); + return SUCCESS; } p = p->pNext; } @@ -325,14 +317,21 @@ ZEND_API int _zend_hash_quick_add_or_update(HashTable *ht, const char *arKey, ui p = ht->arBuckets[nIndex]; while (p != NULL) { if (p->arKey == arKey || - ((p->h == h) && (p->nKeyLength == nKeyLength) - && !memcmp(p->arKey, arKey, nKeyLength)) - ) { - if (flag & HASH_ADD) { - return FAILURE; - } - zend_hash_bucket_update(ht, p, pData, nDataSize, pDest ZEND_FILE_LINE_RELAY_CC); - return SUCCESS; + ((p->h == h) && (p->nKeyLength == nKeyLength) && !memcmp(p->arKey, arKey, nKeyLength))) { + if (flag & HASH_ADD) { + return FAILURE; + } + ZEND_ASSERT(p->pData != pData); + HANDLE_BLOCK_INTERRUPTIONS(); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } + UPDATE_DATA(ht, p, pData, nDataSize); + if (pDest) { + *pDest = p->pData; + } + HANDLE_UNBLOCK_INTERRUPTIONS(); + return SUCCESS; } p = p->pNext; } @@ -397,7 +396,16 @@ ZEND_API int _zend_hash_index_update_or_next_insert(HashTable *ht, ulong h, void if (flag & HASH_NEXT_INSERT || flag & HASH_ADD) { return FAILURE; } - zend_hash_bucket_update(ht, p, pData, nDataSize, pDest ZEND_FILE_LINE_RELAY_CC); + ZEND_ASSERT(p->pData != pData); + HANDLE_BLOCK_INTERRUPTIONS(); + if (ht->pDestructor) { + ht->pDestructor(p->pData); + } + UPDATE_DATA(ht, p, pData, nDataSize); + HANDLE_UNBLOCK_INTERRUPTIONS(); + if (pDest) { + *pDest = p->pData; + } return SUCCESS; } p = p->pNext;

« previous php.cvs (#76565) next »