X-Git-Url: https://git.sesse.net/?p=fjl;a=blobdiff_plain;f=bitsource.h;h=bb3a6d246e62016665e5560ac048397b15f7f8e9;hp=6cabbf004245139d6f3f5a8f5f5fac5cfdb646e6;hb=ddc3c24c837f081787825d128675eca628d0e91c;hpb=d5b9f8f45a79e6f25045bcc10511884a20fc8912 diff --git a/bitsource.h b/bitsource.h index 6cabbf0..bb3a6d2 100644 --- a/bitsource.h +++ b/bitsource.h @@ -34,6 +34,7 @@ struct bit_source { // When this is empty, it needs to be refilled from the input // stream. uint8_t* bytes; + uint8_t* byte_read_ptr; unsigned bytes_available; // Data source. @@ -62,8 +63,8 @@ static inline void possibly_refill(struct bit_source* source, unsigned num_bits) // Slower path (~99% of remaining invocations?) assert(source->bits_available + BITRESERVOIR_FILL_SIZE < BITRESERVOIR_SIZE); if (source->bytes_available >= sizeof(bitreservoir_fill_t)) { - bitreservoir_fill_t fill = read_bitreservoir_fill(source->bytes); - source->bytes += sizeof(bitreservoir_fill_t); + bitreservoir_fill_t fill = read_bitreservoir_fill(source->byte_read_ptr); + source->byte_read_ptr += sizeof(bitreservoir_fill_t); source->bytes_available -= sizeof(bitreservoir_fill_t); source->bits |= (bitreservoir_t)fill << (BITRESERVOIR_SIZE - BITRESERVOIR_FILL_SIZE - source->bits_available); source->bits_available += BITRESERVOIR_FILL_SIZE;