From 295a1c665cdfc70ba525ff538cfbd8112f0a7117 Mon Sep 17 00:00:00 2001 From: Sterling Hughes Date: Thu, 5 Jun 2003 13:58:14 +0000 Subject: [PATCH] fix array_key_exists() from HANDLE_NUMERIC() changes # need to go through this file and find any stuff that relies on this # change --- ext/standard/array.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ext/standard/array.c b/ext/standard/array.c index 2b0e36a4de..bd09630d84 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3629,6 +3629,7 @@ PHP_FUNCTION(array_key_exists) { zval **key, /* key to check for */ **array; /* array to check in */ + long lvalue; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(ZEND_NUM_ARGS(), &key, &array) == FAILURE) { @@ -3642,11 +3643,14 @@ PHP_FUNCTION(array_key_exists) switch (Z_TYPE_PP(key)) { case IS_STRING: - if (zend_hash_exists(HASH_OF(*array), Z_STRVAL_PP(key), Z_STRLEN_PP(key)+1)) { + if (zend_is_numeric_key(*key, &lvalue)) { + if (zend_hash_index_exists(HASH_OF(*array), lvalue)) { + RETURN_TRUE; + } + } else if (zend_hash_exists(HASH_OF(*array), Z_STRVAL_PP(key), Z_STRLEN_PP(key)+1)) { RETURN_TRUE; } RETURN_FALSE; - case IS_LONG: if (zend_hash_index_exists(HASH_OF(*array), Z_LVAL_PP(key))) { RETURN_TRUE; -- 2.50.1