* 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            | 5 +++++
 lib/regex_internal.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index bd7d1fa16..69abc35dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2021-02-05  Paul Eggert  <egg...@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).
diff --git a/lib/regex_internal.c b/lib/regex_internal.c
index 9dd387ef8..55f6b66de 100644
--- a/lib/regex_internal.c
+++ b/lib/regex_internal.c
@@ -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.  */
-- 
2.27.0


Reply via email to