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