[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Updated reference implementation



The reference implementation for SRFI 43 Vector Library has been changed
to incorporate the bug fixes submitted by Taylor Campbell on 4 Feb 2005.
 The new version also fixes bugs found by Zhu Chongkai on 24 Feb 2005,
and William Farr on 12 Apr 2005.

   http://srfi.schemers.org/srfi-43/vector-lib.scm

Thanks for the reports.  The precise diff of the changes to the file are
attached.

David
Index: vector-lib.scm
===================================================================
RCS file: /afs/informatik.uni-tuebingen.de/home/srfi/srfi-cvs/srfi/srfi-43/vector-lib.scm,v
retrieving revision 1.4
diff -r1.4 vector-lib.scm
374,383c374,382
<   (letrec ((loop (lambda (target source sstart i j)
<                    (cond ((>= i sstart)
<                           (vector-set! target j (vector-ref source i))
<                           (loop target source sstart
<                                 (- i 1)
<                                 (+ j 1)))))))
<     (lambda (target tstart source sstart send)
<       (loop target source sstart
<             (- send 1)
<             tstart))))
---
>   (letrec ((loop (lambda (kons knil len vectors i)
>                    (if (= i len)
>                        knil
>                        (loop kons
>                              (apply kons i knil
>                                     (vectors-ref vectors i))
>                              len vectors (+ i 1))))))
>     (lambda (kons knil len vectors)
>       (loop kons knil len vectors 0))))
432c431
<       (loop f target vec (- len 1)))))
---
>       (loop f target vec len))))
443c442
<       (loop f target vectors (- len 1)))))
---
>       (loop f target vectors len))))
740c739
<                  (test (lambda (elt-a)
---
>                  (test (lambda (elt-a elt-b i)
844c843
<           (%vector-map2+! f (make-vector len) vectors len)))))
---
>           (%vector-map2+! f (make-vector len) (cons vec vectors) len)))))
1143,1154c1142,1153
<       (let ((source-length (vector-length source))
<             (lose (lambda (argument)
<                     (error "Vector range out of bounds"
<                            argument
<                            `(while calling ,vector-copy!)
<                            `(target was ,target)
<                            `(target-length was ,(vector-length target))
<                            `(tstart was ,tstart)
<                            `(source was ,source)
<                            `(source-length was ,source-length)
<                            `(sstart was ,sstart)
<                            `(send   was ,send)))))
---
>       (let* ((source-length (vector-length source))
>              (lose (lambda (argument)
>                      (error "vector range out of bounds"
>                             argument
>                             `(while calling ,vector-copy!)
>                             `(target was ,target)
>                             `(target-length was ,(vector-length target))
>                             `(tstart was ,tstart)
>                             `(source was ,source)
>                             `(source-length was ,source-length)
>                             `(sstart was ,sstart)
>                             `(send   was ,send)))))
1175,1186c1174,1185
<       (let ((source-length (vector-length source))
<             (lose (lambda (argument)
<                     (error "Vector range out of bounds"
<                            thing
<                            `(while calling ,vector-reverse-copy!)
<                            `(target was ,target)
<                            `(target-length was ,(vector-length target))
<                            `(tstart was ,tstart)
<                            `(source was ,source)
<                            `(source-length was ,source-length)
<                            `(sstart was ,sstart)
<                            `(send   was ,send)))))
---
>       (let* ((source-length (vector-length source))
>              (lose (lambda (argument)
>                      (error "vector range out of bounds"
>                             argument
>                             `(while calling ,vector-reverse-copy!)
>                             `(target was ,target)
>                             `(target-length was ,(vector-length target))
>                             `(tstart was ,tstart)
>                             `(source was ,source)
>                             `(source-length was ,source-length)
>                             `(sstart was ,sstart)
>                             `(send   was ,send)))))
1202,1203c1201
<                         (between? sstart (+ tstart (- send sstart))
<                                   send)))
---
>                         (between? tstart sstart (+ tstart (- send sstart)))))
1207c1205
<                       `(tstart was ,tstart)
---
>                       `(tstart wa ,tstart)