}
+static inline int *zend_hash_exists_ind(const HashTable *ht, zend_string *key)
+{
+ zval *zv;
+
+ zv = zend_hash_find(ht, key);
+ return zv && (Z_TYPE_P(zv) != IS_INDIRECT ||
+ Z_TYPE_P(Z_INDIRECT_P(zv)) != IS_UNDEF);
+}
+
+
static inline zval *zend_hash_str_find_ind(const HashTable *ht, const char *str, int len)
{
zval *zv;
var_exists = 0;
if (key_type == HASH_KEY_IS_STRING) {
- var_exists = zend_hash_exists(&EG(active_symbol_table)->ht, var_name);
+ var_exists = zend_hash_exists_ind(&EG(active_symbol_table)->ht, var_name);
} else if (key_type == HASH_KEY_IS_LONG && (extract_type == EXTR_PREFIX_ALL || extract_type == EXTR_PREFIX_INVALID)) {
zval num;