fix an off-by-1 error

svn: r11479

original commit: 354ac668e81032de67d1740b32a41fdb2e71078b
This commit is contained in:
Eli Barzilay 2008-08-29 09:22:44 +00:00
commit a957e2c047

View File

@ -37,10 +37,10 @@
(define (base64-encode-stream in out [linesep #"\n"])
(let loop ([data 0] [bits 0] [width 0])
(define (write-char)
(let ([width (modulo (add1 width) 72)])
(when (zero? width) (display linesep out))
(write-byte (vector-ref digit-base64 (arithmetic-shift data (- 6 bits)))
out)
(let ([width (modulo (add1 width) 72)])
(when (zero? width) (display linesep out))
width))
(if (>= bits 6)
(let ([bits (- bits 6)])
@ -48,10 +48,14 @@
(let ([c (read-byte in)])
(if (eof-object? c)
;; flush extra bits
(begin
(printf "1 width = ~s\n" width)
(let ([width (if (> bits 0) (write-char) width)])
(printf "2 width = ~s\n" width)
(when (> width 0)
(for ([i (in-range (modulo (- width) 4))]) (write-byte =byte out))
(display linesep out)))
(for ([i (in-range (modulo (- width) 4))])
(write-byte =byte out))
(display linesep out))))
(loop (+ (arithmetic-shift data 8) c) (+ bits 8) width))))))
(define (base64-decode src)