summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2000-08-22 18:39:29 +0000
committerAndrei Zmievski <andrei@php.net>2000-08-22 18:39:29 +0000
commitd89c5b231c6c819a2c01366a641d132f241663e9 (patch)
tree11c2982ec028eb96ebcd3bddfea3a91bc0826ed2
parent207814916d5711d642067e3bef853145785bbd03 (diff)
downloadphp-git-d89c5b231c6c819a2c01366a641d132f241663e9.tar.gz
@- Updated array_walk() to be able to accept array($obj, 'method')
@ syntax for the walk function. (Andrei)
-rw-r--r--ext/standard/array.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 844b1f4ea3..f6784cfe86 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1015,11 +1015,18 @@ PHP_FUNCTION(array_walk) {
}
target_hash = HASH_OF(*array);
if (!target_hash) {
- php_error(E_WARNING, "Wrong datatype in array_walk() call");
+ php_error(E_WARNING, "Wrong datatype in %s() call",
+ get_active_function_name());
+ BG(array_walk_func_name) = old_walk_func_name;
+ RETURN_FALSE;
+ }
+ if (Z_TYPE_PP(BG(array_walk_func_name)) != IS_ARRAY &&
+ Z_TYPE_PP(BG(array_walk_func_name)) != IS_STRING) {
+ php_error(E_WARNING, "Wrong syntax for function name in %s() call",
+ get_active_function_name());
BG(array_walk_func_name) = old_walk_func_name;
RETURN_FALSE;
}
- convert_to_string_ex(BG(array_walk_func_name));
php_array_walk(target_hash, userdata);
BG(array_walk_func_name) = old_walk_func_name;
RETURN_TRUE;