nlopess Sat Mar 8 11:59:44 2008 UTC
Modified files:
/php-src/ext/pcre php_pcre.c
Log:
MFB
http://cvs.php.net/viewvc.cgi/php-src/ext/pcre/php_pcre.c?r1=1.231&r2=1.232&diff_format=u
Index: php-src/ext/pcre/php_pcre.c
diff -u php-src/ext/pcre/php_pcre.c:1.231 php-src/ext/pcre/php_pcre.c:1.232
--- php-src/ext/pcre/php_pcre.c:1.231 Thu Feb 28 14:16:13 2008
+++ php-src/ext/pcre/php_pcre.c Sat Mar 8 11:59:44 2008
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_pcre.c,v 1.231 2008/02/28 14:16:13 felipe Exp $ */
+/* $Id: php_pcre.c,v 1.232 2008/03/08 11:59:44 nlopess Exp $ */
/* TODO
* php_pcre_replace_impl():
@@ -53,7 +53,8 @@
PHP_PCRE_INTERNAL_ERROR,
PHP_PCRE_BACKTRACK_LIMIT_ERROR,
PHP_PCRE_RECURSION_LIMIT_ERROR,
- PHP_PCRE_BAD_UTF8_ERROR
+ PHP_PCRE_BAD_UTF8_ERROR,
+ PHP_PCRE_BAD_UTF8_OFFSET_ERROR
};
typedef struct {
@@ -82,6 +83,10 @@
preg_code = PHP_PCRE_BAD_UTF8_ERROR;
break;
+ case PCRE_ERROR_BADUTF8_OFFSET:
+ preg_code = PHP_PCRE_BAD_UTF8_OFFSET_ERROR;
+ break;
+
default:
preg_code = PHP_PCRE_INTERNAL_ERROR;
break;
@@ -157,6 +162,7 @@
REGISTER_LONG_CONSTANT("PREG_BACKTRACK_LIMIT_ERROR",
PHP_PCRE_BACKTRACK_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PREG_RECURSION_LIMIT_ERROR",
PHP_PCRE_RECURSION_LIMIT_ERROR, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_ERROR", PHP_PCRE_BAD_UTF8_ERROR,
CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("PREG_BAD_UTF8_OFFSET_ERROR",
PHP_PCRE_BAD_UTF8_OFFSET_ERROR, CONST_CS | CONST_PERSISTENT);
REGISTER_STRING_CONSTANT("PCRE_VERSION", (char *)pcre_version(),
CONST_CS | CONST_PERSISTENT);
return SUCCESS;
@@ -699,7 +705,10 @@
count = pcre_exec(pce->re, extra, subject, subject_len,
start_offset,
exoptions|g_notempty,
offsets, size_offsets);
- /* Check for too many substrings condition. */
+ /* the string was already proved to be valid UTF-8 */
+ exoptions |= PCRE_NO_UTF8_CHECK;
+
+ /* Check for too many substrings condition. */
if (count == 0) {
php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Matched,
but too many substrings");
count = size_offsets/3;
@@ -1172,7 +1181,10 @@
/* Execute the regular expression. */
count = pcre_exec(pce->re, extra, subject, subject_len,
start_offset,
exoptions|g_notempty,
offsets, size_offsets);
-
+
+ /* the string was already proved to be valid UTF-8 */
+ exoptions |= PCRE_NO_UTF8_CHECK;
+
/* Check for too many substrings condition. */
if (count == 0) {
php_error_docref(NULL TSRMLS_CC,E_NOTICE, "Matched, but
too many substrings");
@@ -1664,6 +1676,9 @@
subject_len, start_offset,
exoptions|g_notempty,
offsets, size_offsets);
+ /* the string was already proved to be valid UTF-8 */
+ exoptions |= PCRE_NO_UTF8_CHECK;
+
/* Check for too many substrings condition. */
if (count == 0) {
php_error_docref(NULL TSRMLS_CC,E_NOTICE, "Matched, but
too many substrings");
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php