Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-regex for openSUSE:Factory 
checked in at 2026-08-24 12:01:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-regex (Old)
 and      /work/SRC/openSUSE:Factory/.python-regex.new.1258 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-regex"

Mon Aug 24 12:01:38 2026 rev:36 rq:1373054 version:2026.7.19

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-regex/python-regex.changes        
2026-07-07 21:00:17.608292189 +0200
+++ /work/SRC/openSUSE:Factory/.python-regex.new.1258/python-regex.changes      
2026-08-24 12:02:20.675183950 +0200
@@ -1,0 +2,15 @@
+Sat Aug 22 10:03:23 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2026.7.19:
+  * Git issue 607: SIGSEGV: NULL pointer dereference in
+    `basic_match()` when `(?R)`/`(?0)` recursion is used inside a
+    fuzzy-matching quantifier
+  * Git issue 608: SIGSEGV: out-of-bounds read in
+    `bytes1_char_at()` with `DOTALL` + a fuzzy constraint +
+    `(?r)` reverse-direction matching
+  * Clarified that the POSIX flag makes it look for only the
+    longest overall match.
+  * Git issue 606: `regex`'s compiled-pattern cache eviction is
+    not free-threading-safe
+
+-------------------------------------------------------------------

Old:
----
  regex-2026.6.28.tar.gz

New:
----
  regex-2026.7.19.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-regex.spec ++++++
--- /var/tmp/diff_new_pack.OUAWlz/_old  2026-08-24 12:02:22.742256875 +0200
+++ /var/tmp/diff_new_pack.OUAWlz/_new  2026-08-24 12:02:22.745256981 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-regex
-Version:        2026.6.28
+Version:        2026.7.19
 Release:        0
 Summary:        Alternative regular expression module for Python
 License:        Apache-2.0

++++++ regex-2026.6.28.tar.gz -> regex-2026.7.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/PKG-INFO new/regex-2026.7.19/PKG-INFO
--- old/regex-2026.6.28/PKG-INFO        2026-06-28 20:53:19.430510800 +0200
+++ new/regex-2026.7.19/PKG-INFO        2026-07-19 01:14:48.617783300 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: regex
-Version: 2026.6.28
+Version: 2026.7.19
 Summary: Alternative regular expression module, to replace re.
 Author-email: Matthew Barnett <[email protected]>
 License-Expression: Apache-2.0 AND CNRI-Python
@@ -13,7 +13,6 @@
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
 Classifier: Programming Language :: Python :: 3.14
-Classifier: Programming Language :: Python :: 3.15
 Classifier: Topic :: Scientific/Engineering :: Information Analysis
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: Text Processing
@@ -199,6 +198,8 @@
 
 The POSIX standard for regex is to return the leftmost longest match. This can 
be turned on using the ``POSIX`` flag.
 
+It looks for the longest overall match. It doesn't look for the longest match 
for each group.
+
 .. sourcecode:: python
 
   >>> # Normal matching.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/README.rst 
new/regex-2026.7.19/README.rst
--- old/regex-2026.6.28/README.rst      2026-06-28 20:53:17.000000000 +0200
+++ new/regex-2026.7.19/README.rst      2026-07-19 01:14:45.000000000 +0200
@@ -174,6 +174,8 @@
 
 The POSIX standard for regex is to return the leftmost longest match. This can 
be turned on using the ``POSIX`` flag.
 
+It looks for the longest overall match. It doesn't look for the longest match 
for each group.
+
 .. sourcecode:: python
 
   >>> # Normal matching.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/changelog.txt 
new/regex-2026.7.19/changelog.txt
--- old/regex-2026.6.28/changelog.txt   2026-06-28 20:53:17.000000000 +0200
+++ new/regex-2026.7.19/changelog.txt   2026-07-19 01:14:45.000000000 +0200
@@ -1,3 +1,14 @@
+Version: 2026.7.19
+
+    Git issue 607: SIGSEGV: NULL pointer dereference in `basic_match()` when 
`(?R)`/`(?0)` recursion is used inside a fuzzy-matching quantifier
+    Git issue 608: SIGSEGV: out-of-bounds read in `bytes1_char_at()` with 
`DOTALL` + a fuzzy constraint + `(?r)` reverse-direction matching
+
+Version: 2026.7.10
+
+    Clarified that the POSIX flag makes it look for only the longest overall 
match.
+
+    Git issue 606: `regex`'s compiled-pattern cache eviction is not 
free-threading-safe
+
 Version: 2026.6.28
 
        Git issue 604: regex fails on free-threading python because setlocale 
is not thread-safe
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/pyproject.toml 
new/regex-2026.7.19/pyproject.toml
--- old/regex-2026.6.28/pyproject.toml  2026-06-28 20:53:17.000000000 +0200
+++ new/regex-2026.7.19/pyproject.toml  2026-07-19 01:14:45.000000000 +0200
@@ -4,7 +4,7 @@
 
 [project]
 name = "regex"
-version = "2026.6.28"
+version = "2026.7.19"
 description = "Alternative regular expression module, to replace re."
 readme = "README.rst"
 authors = [
@@ -22,7 +22,6 @@
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
     "Programming Language :: Python :: 3.14",
-    "Programming Language :: Python :: 3.15",
     "Topic :: Scientific/Engineering :: Information Analysis",
     "Topic :: Software Development :: Libraries :: Python Modules",
     "Topic :: Text Processing",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/regex/_main.py 
new/regex-2026.7.19/regex/_main.py
--- old/regex-2026.6.28/regex/_main.py  2026-06-28 20:53:17.000000000 +0200
+++ new/regex-2026.7.19/regex/_main.py  2026-07-19 01:14:45.000000000 +0200
@@ -244,7 +244,7 @@
   "VERSION1", "X", "VERBOSE", "W", "WORD", "error", "Regex", "__version__",
   "__doc__", "RegexFlag"]
 
-__version__ = "2026.6.28"
+__version__ = "2026.7.19"
 
 # --------------------------------------------------------------------
 # Public interface.
@@ -364,8 +364,9 @@
 
 def purge():
     "Clear the regular expression cache"
-    _cache.clear()
-    _locale_sensitive.clear()
+    with _cache_lock:
+        _cache.clear()
+        _locale_sensitive.clear()
 
 # Whether to cache all patterns.
 _cache_all = True
@@ -674,7 +675,9 @@
         # Store this regular expression and named list.
         pattern_key = (pattern, type(pattern), flags, args_needed,
           DEFAULT_VERSION, pattern_locale)
-        _cache[pattern_key] = compiled_pattern
+
+        with _cache_lock:
+            _cache[pattern_key] = compiled_pattern
 
         # Store what keyword arguments are needed.
         _named_args[args_key] = args_needed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/regex.egg-info/PKG-INFO 
new/regex-2026.7.19/regex.egg-info/PKG-INFO
--- old/regex-2026.6.28/regex.egg-info/PKG-INFO 2026-06-28 20:53:19.000000000 
+0200
+++ new/regex-2026.7.19/regex.egg-info/PKG-INFO 2026-07-19 01:14:48.000000000 
+0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: regex
-Version: 2026.6.28
+Version: 2026.7.19
 Summary: Alternative regular expression module, to replace re.
 Author-email: Matthew Barnett <[email protected]>
 License-Expression: Apache-2.0 AND CNRI-Python
@@ -13,7 +13,6 @@
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
 Classifier: Programming Language :: Python :: 3.14
-Classifier: Programming Language :: Python :: 3.15
 Classifier: Topic :: Scientific/Engineering :: Information Analysis
 Classifier: Topic :: Software Development :: Libraries :: Python Modules
 Classifier: Topic :: Text Processing
@@ -199,6 +198,8 @@
 
 The POSIX standard for regex is to return the leftmost longest match. This can 
be turned on using the ``POSIX`` flag.
 
+It looks for the longest overall match. It doesn't look for the longest match 
for each group.
+
 .. sourcecode:: python
 
   >>> # Normal matching.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/regex-2026.6.28/src/_regex.c 
new/regex-2026.7.19/src/_regex.c
--- old/regex-2026.6.28/src/_regex.c    2026-06-28 20:53:17.000000000 +0200
+++ new/regex-2026.7.19/src/_regex.c    2026-07-19 01:14:45.000000000 +0200
@@ -8395,6 +8395,7 @@
 
     test = next->test;
     node = next->node;
+    new_position->node = node;
 
     if (state->reverse) {
         if (start_pos < state->slice_start) {
@@ -9188,7 +9189,7 @@
     if (test == node) {
         text_pos = start_pos + test->step;
 
-        if (test->next_1.node) {
+        if (test->next_1.node && state->slice_start <= text_pos && text_pos <= 
state->slice_end) {
             int status;
 
             status = try_match(state, &test->next_1, text_pos, new_position);
@@ -13430,8 +13431,12 @@
                 repeat->tail_guard_list.last_text_pos = -1;
             }
 
-            /* Call a group, skipping its CALL_REF node. */
-            node = pattern->call_ref_info[index].node->next_1.node;
+            /* Call a group, skipping its CALL_REF node. Be aware that we 
might be calling the entire pattern. */
+            if (pattern->call_ref_info[index].node) {
+                node = pattern->call_ref_info[index].node->next_1.node;
+            } else {
+                node = pattern->start_node;
+            }
             break;
         }
         case RE_OP_GROUP_EXISTS: /* Capture group exists. */

Reply via email to