See ensureBits documentation above. This one ensures up to 9 bits */
| 492 | |
| 493 | /*See ensureBits documentation above. This one ensures up to 9 bits */ |
| 494 | static unsigned ensureBits9(LodePNGBitReader* reader, size_t nbits) { |
| 495 | size_t start = reader->bp >> 3u; |
| 496 | size_t size = reader->size; |
| 497 | if(start + 1u < size) { |
| 498 | reader->buffer = (unsigned)reader->data[start + 0] | ((unsigned)reader->data[start + 1] << 8u); |
| 499 | reader->buffer >>= (reader->bp & 7u); |
| 500 | return 1; |
| 501 | } else { |
| 502 | reader->buffer = 0; |
| 503 | if(start + 0u < size) reader->buffer |= reader->data[start + 0]; |
| 504 | reader->buffer >>= (reader->bp & 7u); |
| 505 | return reader->bp + nbits <= reader->bitsize; |
| 506 | } |
| 507 | } |
| 508 | |
| 509 | /*See ensureBits documentation above. This one ensures up to 17 bits */ |
| 510 | static unsigned ensureBits17(LodePNGBitReader* reader, size_t nbits) { |
no outgoing calls
no test coverage detected