summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2001-08-04 16:54:20 +0000
committerAndrei Zmievski <andrei@php.net>2001-08-04 16:54:20 +0000
commitbffbe675f939ff6da54e10f2361c4fbae1344e52 (patch)
tree4a8bfd93fc11e8c699ca423220f1c1fd7edd6754
parent3884b15b9544f6d9d749d14d2b0cad9eca29a201 (diff)
downloadphp-git-bffbe675f939ff6da54e10f2361c4fbae1344e52.tar.gz
@- Fixed a crash bug in array_map() when NULL callback was passed in. (Andrei)
-rw-r--r--ext/standard/array.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 3a85caeb63..f18621ad1d 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -3010,14 +3010,15 @@ PHP_FUNCTION(array_map)
}
callback = *args[0];
- if (Z_TYPE_P(callback) != IS_NULL && !zend_is_callable(callback, 0, &callback_name)) {
- php_error(E_WARNING, "%s() expects argument 1, '%s', to be either NULL or a valid callback",
- get_active_function_name(TSRMLS_C), callback_name);
+ if (Z_TYPE_P(callback) != IS_NULL) {
+ if (!zend_is_callable(callback, 0, &callback_name)) {
+ php_error(E_WARNING, "%s() expects argument 1, '%s', to be either NULL or a valid callback", get_active_function_name(TSRMLS_C), callback_name);
+ efree(callback_name);
+ efree(args);
+ return;
+ }
efree(callback_name);
- efree(args);
- return;
}
- efree(callback_name);
/* Cache array sizes. */
array_len = (int*)emalloc((ZEND_NUM_ARGS()-1) * sizeof(int));