moriyoshi Tue Nov 26 17:12:40 2002 EDT Modified files: /php4/ext/standard array.c Log: Improved the error reporting portion of array_walk() as suggested by Markus Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.204 php4/ext/standard/array.c:1.205 --- php4/ext/standard/array.c:1.204 Tue Nov 26 16:51:37 2002 +++ php4/ext/standard/array.c Tue Nov 26 17:12:40 2002 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.204 2002/11/26 21:51:37 moriyoshi Exp $ */ +/* $Id: array.c,v 1.205 2002/11/26 22:12:40 moriyoshi Exp $ */ #include "php.h" #include "php_ini.h" @@ -980,37 +980,15 @@ zval_ptr_dtor(&retval_ptr); } else { - if (Z_TYPE_PP(BG(array_walk_func_name)) == IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s() - function does not exist", - (*BG(array_walk_func_name))->value.str.val); - } else if (Z_TYPE_PP(BG(array_walk_func_name)) == IS_ARRAY) { - char *obj_name = NULL; - zval **obj; - zval **mt_name; - - if (zend_hash_index_find(Z_ARRVAL_PP(BG(array_walk_func_name)), - 0, (void **)&obj) == SUCCESS - && zend_hash_index_find(Z_ARRVAL_PP(BG(array_walk_func_name)), - 1, (void **)&mt_name) == SUCCESS - && Z_TYPE_PP(mt_name) == IS_STRING) { - switch (Z_TYPE_PP(obj)) { - case IS_OBJECT: - obj_name = Z_OBJ_PP(obj)->ce->name; - break; - - case IS_STRING: - obj_name = Z_STRVAL_PP(obj); - break; - } - } - - if (obj_name != NULL) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s::%s() - function does not exist", - obj_name, Z_STRVAL_PP(mt_name)); - } else { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid function name"); - } + char *func_name; + + if (zend_is_callable(*BG(array_walk_func_name), 0, +&func_name)) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to +call %s()", func_name); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to +call %s() - function does not exist", func_name); } + + efree(func_name); break; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php