]> granicus.if.org Git - php/commitdiff
Implement zend_hash_add_empty_element() using the existing infrastructure
authorZeev Suraski <zeev@php.net>
Wed, 16 May 2001 17:22:01 +0000 (17:22 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 16 May 2001 17:22:01 +0000 (17:22 +0000)
Zend/zend_hash.c
Zend/zend_hash.h

index 037814ba196140f1d0091d71e18a76acf7e9a41e..b6b9156d335f3f573e2af9dfab257d120774ee7d 100644 (file)
@@ -153,11 +153,6 @@ ZEND_API ulong hashpjw(char *arKey, uint nKeyLength)
                }                                                                                                                                       \
                memcpy(&(p)->pDataPtr, pData, sizeof(void *));                                          \
                (p)->pData = &(p)->pDataPtr;                                                                            \
-       } else if (nDataSize == 0) {                                                                                    \
-               if (!(p)->pDataPtr) {                                                                                           \
-                       pefree((p)->pData, (ht)->persistent);                                                   \
-               }                                                                                                                                       \
-               (p)->pData = &(p)->pDataPtr;                                                                            \
        } else {                                                                                                                                \
                if ((p)->pDataPtr) {                                                                                            \
                        (p)->pData = (void *) pemalloc(nDataSize, (ht)->persistent);    \
@@ -170,9 +165,6 @@ ZEND_API ulong hashpjw(char *arKey, uint nKeyLength)
        if (nDataSize == sizeof(void*)) {                                                                       \
                memcpy(&(p)->pDataPtr, pData, sizeof(void *));                                  \
                (p)->pData = &(p)->pDataPtr;                                                                    \
-       } else if (nDataSize == 0) {                                                                            \
-               (p)->pDataPtr = (void *) 1;                                                                             \
-               (p)->pData = &(p)->pDataPtr;                                                                    \
        } else {                                                                                                                        \
                (p)->pData = (void *) pemalloc(nDataSize, (ht)->persistent);    \
                if (!(p)->pData) {                                                                                              \
@@ -387,6 +379,14 @@ ZEND_API int zend_hash_quick_add_or_update(HashTable *ht, char *arKey, uint nKey
 }
 
 
+ZEND_API int zend_hash_add_empty_element(HashTable *ht, char *arKey, uint nKeyLength)
+{
+       void *dummy=NULL;
+
+       return zend_hash_add(ht, arKey, nKeyLength, &dummy, sizeof(void *), NULL);
+}
+
+
 ZEND_API int zend_hash_index_update_or_next_insert(HashTable *ht, ulong h, void *pData, uint nDataSize, void **pDest, int flag)
 {
        uint nIndex;
@@ -1244,6 +1244,7 @@ ZEND_API ulong zend_hash_next_free_element(HashTable *ht)
 
 }
 
+
 #if ZEND_DEBUG
 void zend_hash_display_pListTail(HashTable *ht)
 {
index bbea4e1a60d38c95646914d868ecba87cae5c0b6..7cc9e2fb2ff92f3a9285ede7608ff7cd7896dbff 100644 (file)
@@ -104,6 +104,8 @@ ZEND_API int zend_hash_index_update_or_next_insert(HashTable *ht, ulong h, void
 #define zend_hash_next_index_insert(ht,pData,nDataSize,pDest) \
                zend_hash_index_update_or_next_insert(ht,0,pData,nDataSize,pDest,HASH_NEXT_INSERT)
 
+ZEND_API int zend_hash_add_empty_element(HashTable *ht, char *arKey, uint nKeyLength);
+
 typedef struct _zend_hash_key {
        char *arKey;
        uint nKeyLength;