commit c03dc6bf7dfc6e326e7249e9e377676db885d99e Author: Matthias Clasen Date: Fri Jan 21 23:10:01 2011 -0500 Update the included copy of PCRE Update PCRE to version 8.12. At the same time, also add Unicode 6.0 script support. diff --git a/glib/gregex.c b/glib/gregex.c index b62bda7..a1d2315 100644 --- a/glib/gregex.c +++ b/glib/gregex.c @@ -230,6 +230,10 @@ match_error (gint errcode) return _("workspace limit for empty substrings reached"); case PCRE_ERROR_BADNEWLINE: return _("invalid combination of newline flags"); + case PCRE_ERROR_BADOFFSET: + return _("bad offset"); + case PCRE_ERROR_SHORTUTF8: + return _("short utf8"); default: break; } @@ -565,6 +569,14 @@ g_match_info_next (GMatchInfo *match_info, prev_match_start = match_info->offsets[0]; prev_match_end = match_info->offsets[1]; + if (match_info->pos > match_info->string_len) + { + /* we have reached the end of the string */ + match_info->pos = -1; + match_info->matches = PCRE_ERROR_NOMATCH; + return FALSE; + } + match_info->matches = pcre_exec (match_info->regex->pcre_re, match_info->regex->extra, match_info->string, @@ -1197,6 +1209,8 @@ g_regex_new (const gchar *pattern, compile_options |= PCRE_NEWLINE_ANY; } + compile_options |= PCRE_UCP; + /* compile the pattern */ re = pcre_compile2 (pattern, compile_options, &errcode, &errmsg, &erroffset, NULL); @@ -1792,6 +1806,7 @@ g_regex_split_simple (const gchar *pattern, regex = g_regex_new (pattern, compile_options, 0, NULL); if (!regex) return NULL; + result = g_regex_split_full (regex, string, -1, 0, match_options, 0, NULL); g_regex_unref (regex); return result; @@ -1924,6 +1939,7 @@ g_regex_split_full (const GRegex *regex, match_ok = g_regex_match_full (regex, string, string_len, start_position, match_options, &match_info, &tmp_error); + while (tmp_error == NULL) { if (match_ok) diff --git a/glib/tests/regex.c b/glib/tests/regex.c index 6e015e9..ef3ac68 100644 --- a/glib/tests/regex.c +++ b/glib/tests/regex.c @@ -1342,6 +1342,7 @@ test_match_all (gconstpointer d) #define PCRE_UTF8 0x00000800 #define PCRE_NO_UTF8_CHECK 0x00002000 #define PCRE_NEWLINE_ANY 0x00400000 +#define PCRE_UCP 0x20000000 static void test_basic (void) @@ -1353,7 +1354,7 @@ test_basic (void) regex = g_regex_new ("[A-Z]+", cflags, mflags, NULL); g_assert (regex != NULL); - g_assert_cmpint (g_regex_get_compile_flags (regex), ==, cflags|PCRE_UTF8|PCRE_NO_UTF8_CHECK|PCRE_NEWLINE_ANY ); + g_assert_cmpint (g_regex_get_compile_flags (regex), ==, cflags|PCRE_UTF8|PCRE_NO_UTF8_CHECK|PCRE_NEWLINE_ANY|PCRE_UCP ); g_assert_cmpint (g_regex_get_match_flags (regex), ==, mflags|PCRE_NO_UTF8_CHECK); g_regex_unref (regex); @@ -2063,8 +2064,6 @@ main (int argc, char *argv[]) { setlocale (LC_ALL, ""); - g_setenv ("G_DEBUG", "fatal_warnings", TRUE); - g_test_init (&argc, &argv, NULL); g_test_add_func ("/regex/basic", test_basic); From 9f0c592b9c5f9ac57d3454f02ffa92e98001ceaf Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Sat, 22 Jan 2011 15:36:13 +0000 Subject: [PATCH] Bump PCRE minimum version https://bugzilla.gnome.org/show_bug.cgi?id=640261 --- configure.ac | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index ca101c5..38bd583 100644 --- a/configure.ac +++ b/configure.ac @@ -2611,7 +2611,7 @@ AC_MSG_RESULT($broken_poll) dnl ********************* dnl *** GRegex checks *** dnl ********************* -PCRE_REQUIRED_VERSION=7.2 +PCRE_REQUIRED_VERSION=8.11 # Check if we should compile GRegex AC_ARG_ENABLE(regex, AC_HELP_STRING([--disable-regex], -- 1.7.1