summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index eae2cf6b90..dd160964eb 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -2195,7 +2195,7 @@ PHPAPI int php_array_merge(HashTable *dest, HashTable *src, int recursive TSRMLS
static void php_array_merge_wrapper(INTERNAL_FUNCTION_PARAMETERS, int recursive)
{
zval ***args = NULL;
- int argc, i;
+ int argc, i, params_ok = 1;
/* Get the argument count and check it */
argc = ZEND_NUM_ARGS();
@@ -2210,13 +2210,16 @@ static void php_array_merge_wrapper(INTERNAL_FUNCTION_PARAMETERS, int recursive)
WRONG_PARAM_COUNT;
}
- for (i=0; i<argc; i++) {
+ for (i = 0; i < argc; i++) {
if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i+1);
- efree(args);
- return;
+ params_ok = 0;
}
}
+ if (params_ok == 0) {
+ efree(args);
+ return;
+ }
array_init(return_value);