regex: debug check for set member duplicates
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 6 Feb 2021 01:08:29 +0000 (17:08 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 6 Feb 2021 01:25:00 +0000 (17:25 -0800)
* lib/regex_internal.c (re_node_set_insert): Add a DEBUG_ASSERT
that would have caught some recently-fixed performance bugs
that caused sets to contain duplicate members.

ChangeLog
lib/regex_internal.c

index bd7d1fa16e1d11aeac723ad16d7988a3443df260..69abc35dc530b674648a425f1b1c0f3ffd14eb08 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2021-02-05  Paul Eggert  <eggert@cs.ucla.edu>
 
+       regex: debug check for set member duplicates
+       * lib/regex_internal.c (re_node_set_insert): Add a DEBUG_ASSERT
+       that would have caught some recently-fixed performance bugs
+       that caused sets to contain duplicate members.
+
        regex: fix longstanding backref match bug
        This fixes a longstanding glibc bug concerning backreferences
        <https://sourceware.org/11053> (2009-12-04).
index 9dd387ef85d64e6238653d3fed71465d491fe86d..55f6b66de0ef3888979abd55c9d6b44dad3f84b2 100644 (file)
@@ -1314,6 +1314,7 @@ re_node_set_insert (re_node_set *set, Idx elem)
     {
       for (idx = set->nelem; set->elems[idx - 1] > elem; idx--)
        set->elems[idx] = set->elems[idx - 1];
+      DEBUG_ASSERT (set->elems[idx - 1] < elem);
     }
 
   /* Insert the new element.  */