From 0c7a01d13af4df4c34a3a5d1ba16ee5154d50655 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Fri, 23 Nov 2012 17:28:07 +0900 Subject: [PATCH] Updated order of read-bytevector! arguments. --- lib/scheme/extras.scm | 33 +++++++++++++++++++-------------- tests/r7rs-tests.scm | 6 +++--- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/lib/scheme/extras.scm b/lib/scheme/extras.scm index c935ca52..1fd8a5f8 100644 --- a/lib/scheme/extras.scm +++ b/lib/scheme/extras.scm @@ -102,20 +102,25 @@ (bytevector-u8-set! res i x) (lp (+ i 1)))))))))) -(define (read-bytevector! vec start end . o) - (if (>= start end) - 0 - (let* ((res (read-bytevector - (- end start) - (if (pair? o) (car o) (current-input-port)))) - (len (bytevector-length res))) - (cond - ((zero? len) - (read-char (open-input-string ""))) - (else - (do ((i 0 (+ i 1))) - ((>= i len) len) - (bytevector-u8-set! vec (+ i start) (bytevector-u8-ref res i)))))))) +(define (read-bytevector! vec . o) + (let* ((in (if (pair? o) (car o) (current-input-port))) + (o (if (pair? o) (cdr o) o)) + (start (if (pair? o) (car o) 0)) + (end (if (and (pair? o) (pair? (cdr o))) + (cadr o) + (bytevector-length vec)))) + (if (>= start end) + 0 + (let* ((res (read-bytevector (- end start) in)) + (len (bytevector-length res))) + (cond + ((zero? len) + (read-char (open-input-string ""))) + (else + (do ((i 0 (+ i 1))) + ((>= i len) len) + (bytevector-u8-set! vec (+ i start) (bytevector-u8-ref res i)) + ))))))) (define (write-bytevector vec . o) (let* ((out (if (pair? o) (car o) (current-output-port))) diff --git a/tests/r7rs-tests.scm b/tests/r7rs-tests.scm index ab5a7266..8fd82122 100644 --- a/tests/r7rs-tests.scm +++ b/tests/r7rs-tests.scm @@ -1526,17 +1526,17 @@ (test #u8(6 7 8 9 10) (let ((bv (bytevector 1 2 3 4 5))) - (read-bytevector! bv 0 5 (open-input-bytevector #u8(6 7 8 9 10))) + (read-bytevector! bv (open-input-bytevector #u8(6 7 8 9 10)) 0 5) bv)) (test #u8(6 7 8 4 5) (let ((bv (bytevector 1 2 3 4 5))) - (read-bytevector! bv 0 3 (open-input-bytevector #u8(6 7 8 9 10))) + (read-bytevector! bv (open-input-bytevector #u8(6 7 8 9 10)) 0 3) bv)) (test #u8(1 2 3 6 5) (let ((bv (bytevector 1 2 3 4 5))) - (read-bytevector! bv 3 4 (open-input-bytevector #u8(6 7 8 9 10))) + (read-bytevector! bv (open-input-bytevector #u8(6 7 8 9 10)) 3 4) bv)) (test #u8(1 2 3)