/* Input variables. */
const unsigned char *next_in;
size_t avail_in;
+ size_t consume_unnotified;
int bit_buffer;
int bits_avail;
size_t bytes_in_section;
while (state->bits_avail < n) {
if (state->avail_in <= 0) {
+ if (state->consume_unnotified) {
+ __archive_read_filter_consume(self->upstream,
+ state->consume_unnotified);
+ state->consume_unnotified = 0;
+ }
state->next_in
= __archive_read_filter_ahead(self->upstream,
1, &ret);
return (-1);
if (ret < 0 || state->next_in == NULL)
return (ARCHIVE_FATAL);
- state->avail_in = ret;
- __archive_read_filter_consume(self->upstream, ret);
+ state->consume_unnotified = state->avail_in = ret;
}
state->bit_buffer |= *state->next_in++ << state->bits_avail;
state->avail_in--;