From fe1c2628d52ca67ffe59420a0b4d371893795e62 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
Date: Tue, 6 Sep 2022 19:19:03 +0200
Subject: [PATCH] regex: Avoid allocating offsets until we've a match

There's no much point of pre-allocating offsets given that we're doing
this when needed if only have matches to store.

So let's just allocate the spaces for the dummy offset we depend on,
while allocate the others on demand.
---
 glib/gregex.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/glib/gregex.c b/glib/gregex.c
index 8a3be9076b..7d403ad53d 100644
--- a/glib/gregex.c
+++ b/glib/gregex.c
@@ -806,15 +806,11 @@ match_info_new (const GRegex     *regex,
     {
       /* These values should be enough for most cases, if they are not
        * enough g_regex_match_all_full() will expand them. */
-      match_info->n_offsets = 24;
       match_info->n_workspace = 100;
       match_info->workspace = g_new (gint, match_info->n_workspace);
     }
-  else
-    {
-      match_info->n_offsets = (match_info->n_subpatterns + 1) * 3;
-    }
 
+  match_info->n_offsets = 2;
   match_info->offsets = g_new0 (gint, match_info->n_offsets);
   /* Set an invalid position for the previous match. */
   match_info->offsets[0] = -1;
-- 
GitLab

