diff options
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/zend_hash.c | 4 | ||||
| -rw-r--r-- | Zend/zend_hash.h | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index bc882dd8db..3ffdf6ef76 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -66,12 +66,12 @@ static void _zend_is_inconsistent(const HashTable *ht, const char *file, int lin if ((ht)->u.flags >= (3 << 8)) { \ zend_error_noreturn(E_ERROR, "Nesting level too deep - recursive dependency?");\ } \ - (ht)->u.flags += (1 << 8); \ + ZEND_HASH_INC_APPLY_COUNT(ht); \ } #define HASH_UNPROTECT_RECURSION(ht) \ if ((ht)->u.flags & HASH_FLAG_APPLY_PROTECTION) { \ - (ht)->u.flags -= (1 << 8); \ + ZEND_HASH_DEC_APPLY_COUNT(ht); \ } #define ZEND_HASH_IF_FULL_DO_RESIZE(ht) \ diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 3db7abdf11..56c7b9ade2 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -640,6 +640,11 @@ static inline void *zend_hash_get_current_data_ptr_ex(HashTable *ht, HashPositio _key = _p->key; \ _val = _z; +#define ZEND_HASH_APPLY_SHIFT 8 +#define ZEND_HASH_GET_APPLY_COUNT(ht) (ht->u.flags >> ZEND_HASH_APPLY_SHIFT) +#define ZEND_HASH_INC_APPLY_COUNT(ht) (ht->u.flags += (1 << ZEND_HASH_APPLY_SHIFT)) +#define ZEND_HASH_DEC_APPLY_COUNT(ht) (ht->u.flags -= (1 << ZEND_HASH_APPLY_SHIFT)) + #endif /* ZEND_HASH_H */ /* |
