Fix bug: typo broke linear dispatch coding.
authorChris Hanson <org/chris-hanson/cph>
Tue, 7 Feb 2017 05:49:15 +0000 (21:49 -0800)
committerChris Hanson <org/chris-hanson/cph>
Tue, 7 Feb 2017 05:49:15 +0000 (21:49 -0800)
src/etc/ucd-converter.scm

index 304ebd3c3c761a31a245d5dd589cfe95a7f68dec..4b4e6cfb5fdb4b6f55c0a1a21cccaea86e8b30a1 100644 (file)
@@ -641,10 +641,10 @@ USA.
   (and (pair? indexes)
        (pair? (cdr indexes))
        (let ((slope (- (cadr indexes) (car indexes))))
-         (let loop ((indexes (cdr indexes)))
-           (if (pair? (cdr indexes))
-               (and (= slope (- (cadr indexes) (car indexes)))
-                    (loop (cdr indexes)))
+         (let loop ((indexes* (cdr indexes)))
+           (if (pair? (cdr indexes*))
+               (and (= slope (- (cadr indexes*) (car indexes*)))
+                    (loop (cdr indexes*)))
                (linear-coder slope indexes))))))
 
 (define (linear-coder slope indexes)
@@ -662,7 +662,7 @@ USA.
                           (make-index-code power)
                           (code:* slope (make-index-code 0)))))))
              (if (< slope 0)
-                 (code:+ (last indexes) (make-offset (- slope)))
+                 (code:- (car indexes) (make-offset (- slope)))
                  (code:+ (car indexes) (make-offset slope)))))))
 
 (define (try-8-bit-direct indexes)
@@ -712,6 +712,10 @@ USA.
         ((eqv? 0 b) a)
         (else `(fix:+ ,a ,b))))
 
+(define (code:- a b)
+  (cond ((eqv? 0 b) a)
+        (else `(fix:- ,a ,b))))
+
 (define (code:* a b)
   (cond ((or (eqv? 0 a) (eqv? 0 b)) 0)
         ((eqv? 1 a) b)