See ensureBits documentation above. This one ensures up to 25 bits */
| 526 | |
| 527 | /*See ensureBits documentation above. This one ensures up to 25 bits */ |
| 528 | static LODEPNG_INLINE unsigned ensureBits25(LodePNGBitReader* reader, size_t nbits) { |
| 529 | size_t start = reader->bp >> 3u; |
| 530 | size_t size = reader->size; |
| 531 | if(start + 3u < size) { |
| 532 | reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | |
| 533 | ((unsigned)reader->data[start + 2] << 16u) | ((unsigned)reader->data[start + 3] << 24u); |
| 534 | reader->buffer >>= (reader->bp & 7u); |
| 535 | return 1; |
| 536 | } else { |
| 537 | reader->buffer = 0; |
| 538 | if(start + 0u < size) reader->buffer |= reader->data[start + 0]; |
| 539 | if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); |
| 540 | if(start + 2u < size) reader->buffer |= ((unsigned)reader->data[start + 2] << 16u); |
| 541 | reader->buffer >>= (reader->bp & 7u); |
| 542 | return reader->bp + nbits <= reader->bitsize; |
| 543 | } |
| 544 | } |
| 545 | |
| 546 | /*See ensureBits documentation above. This one ensures up to 32 bits */ |
| 547 | static LODEPNG_INLINE unsigned ensureBits32(LodePNGBitReader* reader, size_t nbits) { |
no outgoing calls
no test coverage detected