Merge branch 'v0.21.x' into master

This commit is contained in:
Max Kellermann
2020-09-04 18:35:21 +02:00
17 changed files with 185 additions and 110 deletions

View File

@@ -26,7 +26,7 @@
size_t
decoder_read(DecoderClient *client,
InputStream &is,
void *buffer, size_t length)
void *buffer, size_t length) noexcept
{
assert(buffer != nullptr);
@@ -42,9 +42,30 @@ decoder_read(DecoderClient *client,
}
}
size_t
decoder_read_much(DecoderClient *client, InputStream &is,
void *_buffer, size_t size) noexcept
{
uint8_t *buffer = (uint8_t *)_buffer;
size_t total = 0;
while (size > 0 && !is.LockIsEOF()) {
size_t nbytes = decoder_read(client, is, buffer, size);
if (nbytes == 0)
return false;
total += nbytes;
buffer += nbytes;
size -= nbytes;
}
return total;
}
bool
decoder_read_full(DecoderClient *client, InputStream &is,
void *_buffer, size_t size)
void *_buffer, size_t size) noexcept
{
auto *buffer = (uint8_t *)_buffer;
@@ -61,7 +82,7 @@ decoder_read_full(DecoderClient *client, InputStream &is,
}
bool
decoder_skip(DecoderClient *client, InputStream &is, size_t size)
decoder_skip(DecoderClient *client, InputStream &is, size_t size) noexcept
{
while (size > 0) {
char buffer[1024];