See ensureBits documentation above. This one ensures up to 17 bits */
| 508 | |
| 509 | /*See ensureBits documentation above. This one ensures up to 17 bits */ |
| 510 | static unsigned ensureBits17(LodePNGBitReader* reader, size_t nbits) { |
| 511 | size_t start = reader->bp >> 3u; |
| 512 | size_t size = reader->size; |
| 513 | if(start + 2u < size) { |
| 514 | reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u) | |
| 515 | ((unsigned)reader->data[start + 2] << 16u); |
| 516 | reader->buffer >>= (reader->bp & 7u); |
| 517 | return 1; |
| 518 | } else { |
| 519 | reader->buffer = 0; |
| 520 | if(start + 0u < size) reader->buffer |= reader->data[start + 0]; |
| 521 | if(start + 1u < size) reader->buffer |= ((unsigned)reader->data[start + 1] << 8u); |
| 522 | reader->buffer >>= (reader->bp & 7u); |
| 523 | return reader->bp + nbits <= reader->bitsize; |
| 524 | } |
| 525 | } |
| 526 | |
| 527 | /*See ensureBits documentation above. This one ensures up to 25 bits */ |
| 528 | static LODEPNG_INLINE unsigned ensureBits25(LodePNGBitReader* reader, size_t nbits) { |
no outgoing calls
no test coverage detected