summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_hash.h12
-rw-r--r--ext/standard/array.c4
2 files changed, 14 insertions, 2 deletions
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index e90763ce8c..f4c2c30fbc 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -380,6 +380,18 @@ static zend_always_inline int zend_symtable_exists(HashTable *ht, zend_string *k
if (ZEND_HANDLE_NUMERIC(key, idx)) {
return zend_hash_index_exists(ht, idx);
} else {
+ return zend_hash_exists(ht, key);
+ }
+}
+
+
+static zend_always_inline int zend_symtable_exists_ind(HashTable *ht, zend_string *key)
+{
+ zend_ulong idx;
+
+ if (ZEND_HANDLE_NUMERIC(key, idx)) {
+ return zend_hash_index_exists(ht, idx);
+ } else {
return zend_hash_exists_ind(ht, key);
}
}
diff --git a/ext/standard/array.c b/ext/standard/array.c
index def7d7c465..4d2c45ec51 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -5429,7 +5429,7 @@ PHP_FUNCTION(array_key_exists)
switch (Z_TYPE_P(key)) {
case IS_STRING:
- if (zend_symtable_exists(array, Z_STR_P(key))) {
+ if (zend_symtable_exists_ind(array, Z_STR_P(key))) {
RETURN_TRUE;
}
RETURN_FALSE;
@@ -5439,7 +5439,7 @@ PHP_FUNCTION(array_key_exists)
}
RETURN_FALSE;
case IS_NULL:
- if (zend_hash_exists(array, ZSTR_EMPTY_ALLOC())) {
+ if (zend_hash_exists_ind(array, ZSTR_EMPTY_ALLOC())) {
RETURN_TRUE;
}
RETURN_FALSE;