felipe Mon Jun 30 17:14:48 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/pcre php_pcre.c /php-src/ext/pcre/tests preg_replace_callback3.phpt preg_replace_callback_error.phpt preg_replace_error.phpt Log: - New parameter parsing API (to preg_replace*) - Fixed related tests http://cvs.php.net/viewvc.cgi/php-src/ext/pcre/php_pcre.c?r1=1.168.2.9.2.21.2.16&r2=1.168.2.9.2.21.2.17&diff_format=u Index: php-src/ext/pcre/php_pcre.c diff -u php-src/ext/pcre/php_pcre.c:1.168.2.9.2.21.2.16 php-src/ext/pcre/php_pcre.c:1.168.2.9.2.21.2.17 --- php-src/ext/pcre/php_pcre.c:1.168.2.9.2.21.2.16 Mon Jun 30 12:15:53 2008 +++ php-src/ext/pcre/php_pcre.c Mon Jun 30 17:14:48 2008 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_pcre.c,v 1.168.2.9.2.21.2.16 2008/06/30 12:15:53 felipe Exp $ */ +/* $Id: php_pcre.c,v 1.168.2.9.2.21.2.17 2008/06/30 17:14:48 felipe Exp $ */ #include "php.h" #include "php_ini.h" @@ -1289,12 +1289,12 @@ zval **regex, **replace, **subject, - **limit, **subject_entry, **zcount; char *result; int result_len; int limit_val = -1; + long limit; char *string_key; ulong num_key; char *callback_name; @@ -1302,10 +1302,10 @@ int *replace_count_ptr=NULL; /* Get function parameters and do error-checking. */ - if (ZEND_NUM_ARGS() < 3 || ZEND_NUM_ARGS() > 5 || - zend_get_parameters_ex(ZEND_NUM_ARGS(), ®ex, &replace, &subject, &limit, &zcount) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ZZZ|lZ", ®ex, &replace, &subject, &limit, &zcount) == FAILURE) { + return; } + if (!is_callable_replace && Z_TYPE_PP(replace) == IS_ARRAY && Z_TYPE_PP(regex) != IS_ARRAY) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Parameter mismatch, pattern is a string while replacement is an array"); RETURN_FALSE; @@ -1330,8 +1330,7 @@ SEPARATE_ZVAL(subject); if (ZEND_NUM_ARGS() > 3) { - convert_to_long_ex(limit); - limit_val = Z_LVAL_PP(limit); + limit_val = limit; } if (ZEND_NUM_ARGS() > 4) { replace_count_ptr =& replace_count; http://cvs.php.net/viewvc.cgi/php-src/ext/pcre/tests/preg_replace_callback3.phpt?r1=1.1.2.2&r2=1.1.2.2.2.1&diff_format=u Index: php-src/ext/pcre/tests/preg_replace_callback3.phpt diff -u php-src/ext/pcre/tests/preg_replace_callback3.phpt:1.1.2.2 php-src/ext/pcre/tests/preg_replace_callback3.phpt:1.1.2.2.2.1 --- php-src/ext/pcre/tests/preg_replace_callback3.phpt:1.1.2.2 Wed Aug 30 16:46:59 2006 +++ php-src/ext/pcre/tests/preg_replace_callback3.phpt Mon Jun 30 17:14:48 2008 @@ -18,13 +18,13 @@ echo "Done\n"; ?> --EXPECTF-- -Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +Warning: preg_replace_callback() expects at least 3 parameters, 0 given in %s on line %d NULL -Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +Warning: preg_replace_callback() expects at least 3 parameters, 1 given in %s on line %d NULL -Warning: Wrong parameter count for preg_replace_callback() in %s on line %d +Warning: preg_replace_callback() expects at least 3 parameters, 2 given in %s on line %d NULL Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d @@ -36,10 +36,9 @@ Warning: preg_replace_callback(): Requires argument 2, '2', to be a valid callback in %s on line %d int(3) -Warning: preg_replace_callback(): Requires argument 2, '', to be a valid callback in %s on line 1%d -string(0) "" +Warning: preg_replace_callback() expects parameter 4 to be long, string given in %s on line %d +NULL -Warning: preg_replace_callback(): Requires argument 2, 'Array', to be a valid callback in %s on line %d -array(0) { -} +Warning: preg_replace_callback() expects parameter 4 to be long, array given in %s on line %d +NULL Done http://cvs.php.net/viewvc.cgi/php-src/ext/pcre/tests/preg_replace_callback_error.phpt?r1=1.1.4.2&r2=1.1.4.3&diff_format=u Index: php-src/ext/pcre/tests/preg_replace_callback_error.phpt diff -u php-src/ext/pcre/tests/preg_replace_callback_error.phpt:1.1.4.2 php-src/ext/pcre/tests/preg_replace_callback_error.phpt:1.1.4.3 --- php-src/ext/pcre/tests/preg_replace_callback_error.phpt:1.1.4.2 Wed Nov 21 18:22:01 2007 +++ php-src/ext/pcre/tests/preg_replace_callback_error.phpt Mon Jun 30 17:14:48 2008 @@ -33,16 +33,16 @@ -- Testing preg_replace_callback() function with Zero arguments -- -Warning: Wrong parameter count for preg_replace_callback() in %spreg_replace_callback_error.php on line %d +Warning: preg_replace_callback() expects at least 3 parameters, 0 given in %s on line %d NULL -- Testing preg_replace_callback() function with more than expected no. of arguments -- -Warning: Wrong parameter count for preg_replace_callback() in %spreg_replace_callback_error.php on line %d +Warning: preg_replace_callback() expects at most 5 parameters, 6 given in %s on line %d NULL -- Testing preg_replace_callback() function with less than expected no. of arguments -- -Warning: Wrong parameter count for preg_replace_callback() in %spreg_replace_callback_error.php on line %d +Warning: preg_replace_callback() expects at least 3 parameters, 2 given in %s on line %d NULL Done http://cvs.php.net/viewvc.cgi/php-src/ext/pcre/tests/preg_replace_error.phpt?r1=1.1.4.2&r2=1.1.4.3&diff_format=u Index: php-src/ext/pcre/tests/preg_replace_error.phpt diff -u php-src/ext/pcre/tests/preg_replace_error.phpt:1.1.4.2 php-src/ext/pcre/tests/preg_replace_error.phpt:1.1.4.3 --- php-src/ext/pcre/tests/preg_replace_error.phpt:1.1.4.2 Wed Nov 21 18:22:01 2007 +++ php-src/ext/pcre/tests/preg_replace_error.phpt Mon Jun 30 17:14:48 2008 @@ -30,16 +30,16 @@ -- Testing preg_replace() function with zero arguments -- -Warning: Wrong parameter count for preg_replace() in %spreg_replace_error.php on line %d +Warning: preg_replace() expects at least 3 parameters, 0 given in %s on line %d NULL -- Testing preg_replace() function with more than expected no. of arguments -- -Warning: Wrong parameter count for preg_replace() in %spreg_replace_error.php on line %d +Warning: preg_replace() expects at most 5 parameters, 6 given in %s on line %d NULL -- Testing preg_replace() function with less than expected no. of arguments -- -Warning: Wrong parameter count for preg_replace() in %spreg_replace_error.php on line %d +Warning: preg_replace() expects at least 3 parameters, 2 given in %s on line %d NULL Done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php