Browse Source

improve the fix for #25494. If more then one bad parameter is passed

an warning for all will be emitted.
PEAR_1_4DEV
Andrey Hristov 23 years ago
parent
commit
63d7df3e2f
  1. 11
      ext/standard/array.c

11
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) static void php_array_merge_wrapper(INTERNAL_FUNCTION_PARAMETERS, int recursive)
{ {
zval ***args = NULL; zval ***args = NULL;
int argc, i;
int argc, i, params_ok = 1;
/* Get the argument count and check it */ /* Get the argument count and check it */
argc = ZEND_NUM_ARGS(); argc = ZEND_NUM_ARGS();
@ -2210,13 +2210,16 @@ static void php_array_merge_wrapper(INTERNAL_FUNCTION_PARAMETERS, int recursive)
WRONG_PARAM_COUNT; WRONG_PARAM_COUNT;
} }
for (i=0; i<argc; i++) {
for (i = 0; i < argc; i++) {
if (Z_TYPE_PP(args[i]) != IS_ARRAY) { if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument #%d is not an array", i+1); 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); array_init(return_value);

Loading…
Cancel
Save