[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#35880] [PATCH 1/7] lzlib: Add 'make-lzip-input-port/compressed'.
From: |
Pierre Neidhardt |
Subject: |
[bug#35880] [PATCH 1/7] lzlib: Add 'make-lzip-input-port/compressed'. |
Date: |
Sat, 01 Jun 2019 08:02:29 +0200 |
Ludovic Courtès <address@hidden> writes:
> I think the ‘lzread!’ loop should look like this (the tests still pass
> with this):
>
> --8<---------------cut here---------------start------------->8---
> (let loop ((read 0)
> (start start))
> (cond ((< read count)
> (match (lz-decompress-read decoder bv start (- count read))
> (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)))
> --8<---------------cut here---------------end--------------->8---
Looks good to me!
>> (match (lz-decompress-read decoder bv start (- count read))
>> (0 (if (eof-object? (feed-decoder! decoder))
>> read
>> (loop read start)))
>>
>> I'm not sure I understand the above: if we read nothing, then we try
>> again?
>
> No: if we read *something*, we try again; if we read nothing, we return.
If we read nothing _and_ it is not an EOF (it can be an empty vector),
then we loop indefinitely, no?
> Thanks for your careful review, much appreciated!
You are welcome, thanks for your invaluable work!
--
Pierre Neidhardt
https://ambrevar.xyz/
signature.asc
Description: PGP signature
- [bug#35880] [PATCH 1/7] lzlib: Add 'make-lzip-input-port/compressed'.,
Pierre Neidhardt <=