[glib: 1/3] gregex: do not set match and recursion limits on match context




commit 6535c77b00a444750148d9d658e4d47214bb4562
Author: Aleksei Rybalkin <aleksei rybalkin org>
Date:   Mon Jul 25 16:48:03 2022 +0200

    gregex: do not set match and recursion limits on match context
    
    These are not really necessary, and cause breakages (e.g. #2700).
    pcre2_set_recursion_limit is also deprecated.
    
    Fixes: #2700

 glib/gregex.c      | 2 --
 glib/tests/regex.c | 3 +++
 2 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/glib/gregex.c b/glib/gregex.c
index 6741d2479f..dd61dc4813 100644
--- a/glib/gregex.c
+++ b/glib/gregex.c
@@ -769,8 +769,6 @@ match_info_new (const GRegex *regex,
                       &match_info->n_subpatterns);
 
   match_info->match_context = pcre2_match_context_create (NULL);
-  pcre2_set_match_limit (match_info->match_context, 65536); /* should be plenty */
-  pcre2_set_recursion_limit (match_info->match_context, 64); /* should be plenty */
 
   if (is_dfa)
     {
diff --git a/glib/tests/regex.c b/glib/tests/regex.c
index bb1a5ff762..5839465fae 100644
--- a/glib/tests/regex.c
+++ b/glib/tests/regex.c
@@ -2493,6 +2493,9 @@ main (int argc, char *argv[])
   TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "dž", -1, 0, 0, TRUE);
   TEST_MATCH("[DŽ]", G_REGEX_CASELESS, 0, "Dž", -1, 0, 0, TRUE);
 
+  /* see https://gitlab.gnome.org/GNOME/glib/-/issues/2700 */
+  TEST_MATCH("(\n.+)+", G_REGEX_DEFAULT, 0, "\n \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  \n  
\n  \n  \n  \n  \n  \n", -1, 0, 0, TRUE);
+
   /* TEST_MATCH_NEXT#(pattern, string, string_len, start_position, ...) */
   TEST_MATCH_NEXT0("a", "x", -1, 0);
   TEST_MATCH_NEXT0("a", "ax", -1, 1);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]