From 0bd854dedfe6e3b60fee81cf2c00873b872cd265 Mon Sep 17 00:00:00 2001 From: Abdulaziz Ghuloum Date: Wed, 17 Dec 2008 15:42:28 -0500 Subject: [PATCH] fixed bug where put-bytevector was advancing the port index twice as far as needed. --- scheme/ikarus.io.ss | 3 +-- scheme/last-revision | 2 +- scheme/tests/io.ss | 30 +++++++++++++++++++++++++++++- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/scheme/ikarus.io.ss b/scheme/ikarus.io.ss index 1487113..5579364 100644 --- a/scheme/ikarus.io.ss +++ b/scheme/ikarus.io.ss @@ -2233,8 +2233,7 @@ [(fx>= room c) ;; hurray (copy! bv ($port-buffer p) i idx c) - (let ([idx (fx+ idx c)]) - ($set-port-index! p (fx+ idx c)))] + ($set-port-index! p (fx+ idx c))] [(fx> room 0) ($set-port-index! p (fx+ idx room)) (copy! bv ($port-buffer p) i idx room) diff --git a/scheme/last-revision b/scheme/last-revision index f345fc6..7f8c320 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1719 +1720 diff --git a/scheme/tests/io.ss b/scheme/tests/io.ss index ed1194e..7262735 100755 --- a/scheme/tests/io.ss +++ b/scheme/tests/io.ss @@ -683,6 +683,30 @@ (check (make-custom-textual-input-port "foo" (lambda a 0) #f #f #f)) (check (make-custom-textual-output-port "foo" (lambda a 0) #f #f #f))) + + (define (test-put-bytevector) + (call-with-values open-bytevector-output-port + (lambda (p e) + (do ((i 0 (+ i 1))) ((= i 86)) + (put-bytevector p '#vu8(0)) + (put-u8 p 0)) + (assert (equal? (e) (make-bytevector (* 86 2) 0))))) + + (call-with-values open-bytevector-output-port + (lambda (p e) + (do ((i 0 (+ i 1))) ((= i 86)) + (put-u8 p 0) + (put-u8 p 0)) + (assert (equal? (e) (make-bytevector (* 86 2) 0))))) + + (call-with-values open-bytevector-output-port + (lambda (p e) + (do ((i 0 (+ i 1))) ((= i 86)) + (put-bytevector p '#vu8(0)) + (put-bytevector p '#vu8(0))) + (assert (equal? (e) (make-bytevector (* 86 2) 0)))))) + + (define (run-tests) (test-custom-binary-input-ports) (test-custom-binary-output-ports) @@ -690,6 +714,10 @@ (test-input-files) (test-partial-reads) (test-input-ports) - (test-has-port-position)) + (test-has-port-position) + (test-put-bytevector)) ) + + +