From 87399dfc209fdec523947e7b45a1ad348afa4d46 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 1 Jun 2019 11:38:33 +0200 Subject: lzlib: 'make-lzip-input-port' better handles end of decompression. Suggested by Pierre Neidhardt . * guix/lzlib.scm (lzread!): Call 'lz-decompress-finish' when 'feed-decoder!' returns EOF. Call 'lz-decompress-finished?' to determine end of compression. --- guix/lzlib.scm | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/guix/lzlib.scm b/guix/lzlib.scm index 31d84971cb..24c7b4b448 100644 --- a/guix/lzlib.scm +++ b/guix/lzlib.scm @@ -510,9 +510,13 @@ the end-of-stream has been reached." (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)))) -- cgit 1.4.1