Fix infinite recursion bug in HACK-BRACKET-SPEC:

The LOOSE and RANGES lists weren't getting sorted in the fixpoint
comparison.
This commit is contained in:
sperber 2002-02-21 13:44:47 +00:00
parent be84d5ec47
commit 64cdef6fc7
1 changed files with 53 additions and 51 deletions

View File

@ -562,7 +562,6 @@
;; Repeat until stable: ;; Repeat until stable:
(let ((loose (sort-list loose0 loose<=)) ; Sort loose chars and ranges. (let ((loose (sort-list loose0 loose<=)) ; Sort loose chars and ranges.
(ranges (sort-list ranges0 range<))) (ranges (sort-list ranges0 range<)))
;; If ] opens or closes a range, shrink it out. ;; If ] opens or closes a range, shrink it out.
;; If - opens a range, shrink it out. ;; If - opens a range, shrink it out.
(receive (loose ranges) (receive (loose ranges)
@ -588,6 +587,9 @@
(append new-ranges0 new-ranges))))) (append new-ranges0 new-ranges)))))
(values loose '()))) (values loose '())))
(let ((loose (sort-list loose loose<=)) ; Sort loose chars and ranges.
(ranges (sort-list ranges range<)))
(? ((or (not (equal? loose0 loose)) ; Loop if anything changed. (? ((or (not (equal? loose0 loose)) ; Loop if anything changed.
(not (equal? ranges0 ranges))) (not (equal? ranges0 ranges)))
(lp loose ranges end-hyphen?)) (lp loose ranges end-hyphen?))
@ -622,4 +624,4 @@
(apply string-append (apply string-append
(map (lambda (r) (string (car r) #\- (cdr r))) (map (lambda (r) (string (car r) #\- (cdr r)))
ranges)) ranges))
"]"))))))) "]"))))))))