| 1561 | } |
| 1562 | |
| 1563 | static unsigned countZeros(const unsigned char* data, size_t size, size_t pos) { |
| 1564 | const unsigned char* start = data + pos; |
| 1565 | const unsigned char* end = start + MAX_SUPPORTED_DEFLATE_LENGTH; |
| 1566 | if(end > data + size) end = data + size; |
| 1567 | data = start; |
| 1568 | while(data != end && *data == 0) ++data; |
| 1569 | /*subtracting two addresses returned as 32-bit number (max value is MAX_SUPPORTED_DEFLATE_LENGTH)*/ |
| 1570 | return (unsigned)(data - start); |
| 1571 | } |
| 1572 | |
| 1573 | /*wpos = pos & (windowsize - 1)*/ |
| 1574 | static void updateHashChain(Hash* hash, size_t wpos, unsigned hashval, unsigned short numzeros) { |