[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)