From 02090106d8f43e67869bce0420fda29992797dbe Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 21 Oct 2005 15:20:30 +0000 Subject: [PATCH] Fixed bug #34934 (offsetExists is not called from array_key_exists) --- ext/standard/array.c | 11 +++++++++++ ext/standard/tests/array/bug34934.phpt | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 ext/standard/tests/array/bug34934.phpt diff --git a/ext/standard/array.c b/ext/standard/array.c index a5ec285b85..927ffcc1f6 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4658,6 +4658,17 @@ PHP_FUNCTION(array_key_exists) RETURN_FALSE; } + if (Z_TYPE_PP(array) == IS_OBJECT && + Z_OBJ_HT_PP(array)->has_dimension && + (Z_OBJ_HT_PP(array)->has_dimension != std_object_handlers.has_dimension || + instanceof_function_ex(Z_OBJCE_PP(array), U_CLASS_ENTRY(zend_ce_arrayaccess), 1 TSRMLS_CC))) { + if (Z_OBJ_HT_PP(array)->has_dimension(*array, *key, 0 TSRMLS_CC)) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } + } + switch (Z_TYPE_PP(key)) { case IS_STRING: case IS_UNICODE: diff --git a/ext/standard/tests/array/bug34934.phpt b/ext/standard/tests/array/bug34934.phpt new file mode 100755 index 0000000000..1f5d161f30 --- /dev/null +++ b/ext/standard/tests/array/bug34934.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #34934 (offsetExists is not called from array_key_exists) +--FILE-- + +--EXPECT-- +MyArray::offsetExists(test) +bool(true) -- 2.50.1