fix an off-by-1 error
svn: r11479 original commit: 354ac668e81032de67d1740b32a41fdb2e71078b
This commit is contained in:
commit
a957e2c047
|
@ -37,10 +37,10 @@
|
|||
(define (base64-encode-stream in out [linesep #"\n"])
|
||||
(let loop ([data 0] [bits 0] [width 0])
|
||||
(define (write-char)
|
||||
(write-byte (vector-ref digit-base64 (arithmetic-shift data (- 6 bits)))
|
||||
out)
|
||||
(let ([width (modulo (add1 width) 72)])
|
||||
(when (zero? width) (display linesep out))
|
||||
(write-byte (vector-ref digit-base64 (arithmetic-shift data (- 6 bits)))
|
||||
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
|
||||
(let ([width (if (> bits 0) (write-char) width)])
|
||||
(when (> width 0)
|
||||
(for ([i (in-range (modulo (- width) 4))]) (write-byte =byte out))
|
||||
(display linesep out)))
|
||||
(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))))
|
||||
(loop (+ (arithmetic-shift data 8) c) (+ bits 8) width))))))
|
||||
|
||||
(define (base64-decode src)
|
||||
|
|
Loading…
Reference in New Issue
Block a user