]> granicus.if.org Git - php/commitdiff
- Undo a bug we introduced. (Another one out there).
authorAndi Gutmans <andi@php.net>
Wed, 19 Jan 2000 17:31:33 +0000 (17:31 +0000)
committerAndi Gutmans <andi@php.net>
Wed, 19 Jan 2000 17:31:33 +0000 (17:31 +0000)
Zend/zend_hash.c

index 0d50676cc999f206bdb79fded2b77666712fba1c..88bcd588e556c8680067c3f5b9f6488df2e83b74 100644 (file)
@@ -522,7 +522,7 @@ ZEND_API int zend_hash_rehash(HashTable *ht)
 ZEND_API int zend_hash_del_key_or_index(HashTable *ht, char *arKey, uint nKeyLength, ulong h, int flag)
 {
        uint nIndex;
-       Bucket *p;
+       Bucket *p, *t = NULL;           /* initialize just to shut gcc up with -Wall */
 
        IS_CONSISTENT(ht);
 
@@ -537,8 +537,10 @@ ZEND_API int zend_hash_del_key_or_index(HashTable *ht, char *arKey, uint nKeyLen
                if ((p->h == h) && ((p->nKeyLength == 0) || /* Numeric index */
                        ((p->nKeyLength == nKeyLength) && (!memcmp(p->arKey, arKey, nKeyLength))))) {
                        HANDLE_BLOCK_INTERRUPTIONS();
-                       if (ht->arBuckets[nIndex] == p) {
+                       if (p == ht->arBuckets[nIndex]) {
                                ht->arBuckets[nIndex] = p->pNext;
+                       } else {
+                               t->pNext = p->pNext;
                        }
                        if (p->pListLast != NULL) {
                                p->pListLast->pListNext = p->pListNext;
@@ -565,6 +567,7 @@ ZEND_API int zend_hash_del_key_or_index(HashTable *ht, char *arKey, uint nKeyLen
                        ht->nNumOfElements--;
                        return SUCCESS;
                }
+               t = p;
                p = p->pNext;
        }
        return FAILURE;