| 2089 | /* ////////////////////////////////////////////////////////////////////////// */ |
| 2090 | |
| 2091 | static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) |
| 2092 | { |
| 2093 | unsigned s1 = adler & 0xffff; |
| 2094 | unsigned s2 = (adler >> 16) & 0xffff; |
| 2095 | |
| 2096 | while(len > 0) |
| 2097 | { |
| 2098 | /*at least 5550 sums can be done before the sums overflow, saving a lot of module divisions*/ |
| 2099 | unsigned amount = len > 5550 ? 5550 : len; |
| 2100 | len -= amount; |
| 2101 | while(amount > 0) |
| 2102 | { |
| 2103 | s1 += (*data++); |
| 2104 | s2 += s1; |
| 2105 | --amount; |
| 2106 | } |
| 2107 | s1 %= 65521; |
| 2108 | s2 %= 65521; |
| 2109 | } |
| 2110 | |
| 2111 | return (s2 << 16) | s1; |
| 2112 | } |
| 2113 | |
| 2114 | /*Return the adler32 of the bytes data[0..len-1]*/ |
| 2115 | static unsigned adler32(const unsigned char* data, unsigned len) |