Change %CANONICALIZE-SCALAR-VALUE-LIST to eliminate empty ranges.
authorChris Hanson <org/chris-hanson/cph>
Wed, 2 Jun 2010 08:36:42 +0000 (01:36 -0700)
committerChris Hanson <org/chris-hanson/cph>
Wed, 2 Jun 2010 08:36:42 +0000 (01:36 -0700)
src/runtime/chrset.scm

index ec7f0b086bab8256251fd9a1f658d5db7276f6ba..2c39a7fa331c2cf66d2b58ca1dcd0590ec62d70a 100644 (file)
@@ -204,9 +204,14 @@ USA.
     high))
 \f
 (define (%canonicalize-scalar-value-list ranges)
-  ;; Sort ranges in order, then merge adjacent ranges.
+  ;; Sort ranges in order, delete empty ranges, then merge adjacent
+  ;; ranges.
   (if (pair? ranges)
-      (let ((ranges (sort ranges %range<?)))
+      (let ((ranges
+            (filter! (lambda (range)
+                       (fix:< (%range-start range)
+                              (%range-end range)))
+                     (sort ranges %range<?))))
        (let loop
            ((start1 (%range-start (car ranges)))
             (end1 (%range-end (car ranges)))