Fix a bug that would not fill in the fifth argument to preg_replace()

properly, if the variable was not declared previously.
This commit is contained in:
Andrei Zmievski 2006-04-06 21:10:45 +00:00
parent ad7768ee63
commit d288f66c7c
4 changed files with 31 additions and 9 deletions

View File

@ -40,6 +40,14 @@ ZEND_BEGIN_ARG_INFO(fourth_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(fifth_arg_force_ref, 0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(0)
ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(all_args_by_ref, 1)
ZEND_END_ARG_INFO();

View File

@ -36,6 +36,7 @@ extern struct _zend_arg_info first_arg_force_ref[2];
extern struct _zend_arg_info second_arg_force_ref[3];
extern struct _zend_arg_info third_arg_force_ref[4];
extern struct _zend_arg_info fourth_arg_force_ref[5];
extern struct _zend_arg_info fifth_arg_force_ref[6];
extern struct _zend_arg_info all_args_by_ref[1];
#define ZEND_MODULE_API_NO 20050922

20
ext/pcre/TODO Normal file
View File

@ -0,0 +1,20 @@
- Allow NULL for $matches argument (helps when using preg_match only for
match condition) - might not be possible
- http://bugs.php.net/bug.php?id=36975
- I'd love to see a pattern modifer which says "don't fill $matches except
for the overall match and any specific named captures". This would allow
(?: ...) to be avoided in a lot of cases.
This could make for non-trivial speed enhancements with regexes that have
a lot of parens when working on long strings, since you'd not have to
copy them multiple times to the $matches array.
Also, it makes $matches much cleaner after a match where you've named the
captures you're interested in.
(Note that this would not involve the use of PCRE_NO_AUTO_CAPTURE, as
that would change the semantics of backreferences)

View File

@ -18,13 +18,6 @@
/* $Id$ */
/*
* TODO
*
* - Allow NULL for $matches argument (helps when using preg_match only for
* match condition)
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@ -1622,8 +1615,8 @@ PHP_FUNCTION(preg_grep)
zend_function_entry pcre_functions[] = {
PHP_FE(preg_match, third_arg_force_ref)
PHP_FE(preg_match_all, third_arg_force_ref)
PHP_FE(preg_replace, NULL)
PHP_FE(preg_replace_callback, NULL)
PHP_FE(preg_replace, fifth_arg_force_ref)
PHP_FE(preg_replace_callback, fifth_arg_force_ref)
PHP_FE(preg_split, NULL)
PHP_FE(preg_quote, NULL)
PHP_FE(preg_grep, NULL)