lzlib: 'make-lzip-input-port' better handles end of decompression.

Suggested by Pierre Neidhardt <mail@ambrevar.xyz>.

* guix/lzlib.scm (lzread!): Call 'lz-decompress-finish' when
'feed-decoder!' returns EOF.  Call 'lz-decompress-finished?' to
determine end of compression.
This commit is contained in:
Ludovic Courtès 2019-06-01 11:38:33 +02:00
parent b6cf7e54ea
commit 87399dfc20
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -510,9 +510,13 @@ (define (feed-decoder! decoder)
(start start))
(cond ((< read count)
(match (lz-decompress-read decoder bv start (- count read))
(0 (if (eof-object? (feed-decoder! decoder))
read
(loop read start)))
(0 (cond ((lz-decompress-finished? decoder)
read)
((eof-object? (feed-decoder! decoder))
(lz-decompress-finish decoder)
(loop read start))
(else ;read again
(loop read start))))
(n (loop (+ read n) (+ start n)))))
(else
read))))