| 2034 | /* ////////////////////////////////////////////////////////////////////////// */ |
| 2035 | |
| 2036 | static unsigned update_adler32(unsigned adler, const unsigned char* data, unsigned len) |
| 2037 | { |
| 2038 | unsigned s1 = adler & 0xffff; |
| 2039 | unsigned s2 = (adler >> 16) & 0xffff; |
| 2040 | |
| 2041 | while(len > 0) |
| 2042 | { |
| 2043 | /*at least 5550 sums can be done before the sums overflow, saving a lot of module divisions*/ |
| 2044 | unsigned amount = len > 5550 ? 5550 : len; |
| 2045 | len -= amount; |
| 2046 | while(amount > 0) |
| 2047 | { |
| 2048 | s1 += (*data++); |
| 2049 | s2 += s1; |
| 2050 | amount--; |
| 2051 | } |
| 2052 | s1 %= 65521; |
| 2053 | s2 %= 65521; |
| 2054 | } |
| 2055 | |
| 2056 | return (s2 << 16) | s1; |
| 2057 | } |
| 2058 | |
| 2059 | /*Return the adler32 of the bytes data[0..len-1]*/ |
| 2060 | static unsigned adler32(const unsigned char* data, unsigned len) |