~ chicken-core (chicken-5) 58df78eea09328057028a086224c98c35bec7f35


commit 58df78eea09328057028a086224c98c35bec7f35
Author:     Peter Bex <Peter.Bex@xs4all.nl>
AuthorDate: Fri Sep 24 22:36:17 2010 +0200
Commit:     Peter Bex <Peter.Bex@xs4all.nl>
CommitDate: Fri Sep 24 22:36:17 2010 +0200

    Apply upstream changeset 9718c63d6f58 (Fix joining algorithm in cset-union to always iterate with the new value consed onto the correct list to cause it to join with the other when there's overlap)

diff --git a/irregex-core.scm b/irregex-core.scm
index e8b3cd9a..78802bb6 100644
--- a/irregex-core.scm
+++ b/irregex-core.scm
@@ -3726,6 +3726,10 @@
           (union-range (cdr a) b (cons a-range res)))
          ((char>? (car a-range) (next-char (cdr b-range)))
           (union-range (cdr b) a (cons b-range res)))
+         ((char>=? (cdr a-range) (car b-range))
+          (union-range (cons (char-ranges-union a-range b-range) (cdr a))
+                       (cdr b)
+                       res))
          (else (union-range (cdr a)
                             (cons (char-ranges-union a-range b-range) (cdr b))
                             res))))))))
Trap