]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
regex: pacify 16.1.1 -Wanalyzer-out-of-bounds
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 24 May 2026 17:48:54 +0000 (10:48 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 24 May 2026 18:52:15 +0000 (11:52 -0700)
* lib/regex_internal.c (re_node_set_insert): Add a DEBUG_ASSERT.
Needed for gcc 16.1.1 20260515 (Red Hat 16.1.1-2) on x86-64 when
_REGEX_AVOID_UCHAR_H is defined.

ChangeLog
lib/regex_internal.c

index 169ee053dd91d072b22b35ab0d72ea048a89bc53..556c9bf5b51742f8209de616438d9f6ddae2a284 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2026-05-24  Paul Eggert  <eggert@cs.ucla.edu>
 
+       regex: pacify 16.1.1 -Wanalyzer-out-of-bounds
+       * lib/regex_internal.c (re_node_set_insert): Add a DEBUG_ASSERT.
+       Needed for gcc 16.1.1 20260515 (Red Hat 16.1.1-2) on x86-64 when
+       _REGEX_AVOID_UCHAR_H is defined.
+
        regex: new _REGEX_AVOID_UCHAR_H option
        This is for GNU Emacs, where the regex code is only auxiliary,
        probably not enough to justify the hassle of incorporating
index ad1b273546a7219a70f1a607b03d21927babc883..e5e5be84bd45482b21770b97e06e3e6a148d3138 100644 (file)
@@ -1285,7 +1285,13 @@ re_node_set_insert (re_node_set *set, Idx elem)
   else
     {
       for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
-       set->elems[idx] = set->elems[idx - 1];
+        {
+          set->elems[idx] = set->elems[idx - 1];
+          /* Although we already guaranteed that idx is at least 2 here,
+             add an assertion to pacify GCC 16.1.1 -Wanalyzer-out-of-bounds
+             when _REGEX_AVOID_UCHAR_H is defined.  */
+          DEBUG_ASSERT (1 < idx);
+        }
       /* Already in set.  Return early.  */
       if (__glibc_unlikely (set->elems[idx - 1] == elem))
        return true;