com php-src: Revert "Add helper function for updating bucket contents": Zend/zend_hash.c
| From: | Nikita Popov | 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;