felipe Thu Jul 24 03:07:23 2008 UTC
Modified files: (Branch: PHP_5_3)
/php-src/ext/standard array.c
Log:
- MFH: Improved parameter handling
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/array.c?r1=1.308.2.21.2.37.2.36&r2=1.308.2.21.2.37.2.37&diff_format=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.308.2.21.2.37.2.36
php-src/ext/standard/array.c:1.308.2.21.2.37.2.37
--- php-src/ext/standard/array.c:1.308.2.21.2.37.2.36 Wed Jul 23 16:28:46 2008
+++ php-src/ext/standard/array.c Thu Jul 24 03:07:22 2008
@@ -21,7 +21,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: array.c,v 1.308.2.21.2.37.2.36 2008/07/23 16:28:46 felipe Exp $ */
+/* $Id: array.c,v 1.308.2.21.2.37.2.37 2008/07/24 03:07:22 felipe Exp $ */
#include "php.h"
#include "php_ini.h"
@@ -2833,28 +2833,35 @@
int (*intersect_data_compare_func)(zval **, zval ** TSRMLS_DC) = NULL;
zend_bool ok;
zval **data;
+ int req_args;
+ char *param_spec;
/* Get the argument count */
argc = ZEND_NUM_ARGS();
if (data_compare_type == INTERSECT_COMP_DATA_USER) {
- if (argc < 3) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "at least 3
parameters are required, %d given", ZEND_NUM_ARGS());
- return;
- }
-
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "+f",
&args, &argc, &BG(user_compare_fci), &BG(user_compare_fci_cache)) == FAILURE) {
- return;
- }
+ /* INTERSECT_COMP_DATA_USER - array_uintersect_assoc() */
+ req_args = 3;
+ param_spec = "+f";
intersect_data_compare_func = zval_user_compare;
} else {
- if (argc < 2 || zend_parse_parameters(ZEND_NUM_ARGS()
TSRMLS_CC, "+", &args, &argc) == FAILURE) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "at least 2
parameters are required, %d given", ZEND_NUM_ARGS());
- return;
- }
+ /* INTERSECT_COMP_DATA_NONE - array_intersect_key()
+ INTERSECT_COMP_DATA_INTERNAL - array_intersect_assoc()
*/
+ req_args = 2;
+ param_spec = "+";
+
if (data_compare_type == INTERSECT_COMP_DATA_INTERNAL) {
intersect_data_compare_func = zval_compare;
}
}
+
+ if (argc < req_args) {
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "at least %d
parameters are required, %d given", req_args, argc);
+ return;
+ }
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, param_spec, &args,
&argc, &BG(user_compare_fci), &BG(user_compare_fci_cache)) == FAILURE) {
+ return;
+ }
for (i = 0; i < argc; i++) {
if (Z_TYPE_PP(args[i]) != IS_ARRAY) {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php