zlib 1.2.0.8
This commit is contained in:
31
adler32.c
31
adler32.c
@@ -8,7 +8,7 @@
|
||||
#define ZLIB_INTERNAL
|
||||
#include "zlib.h"
|
||||
|
||||
#define BASE 65521L /* largest prime smaller than 65536 */
|
||||
#define BASE 65521UL /* largest prime smaller than 65536 */
|
||||
#define NMAX 5552
|
||||
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
|
||||
|
||||
@@ -18,6 +18,31 @@
|
||||
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
|
||||
#define DO16(buf) DO8(buf,0); DO8(buf,8);
|
||||
|
||||
#ifdef NO_DIVIDE
|
||||
# define MOD(a) \
|
||||
do { \
|
||||
if (a > (BASE << 16)) a -= (BASE << 16); \
|
||||
if (a > (BASE << 15)) a -= (BASE << 15); \
|
||||
if (a > (BASE << 14)) a -= (BASE << 14); \
|
||||
if (a > (BASE << 13)) a -= (BASE << 13); \
|
||||
if (a > (BASE << 12)) a -= (BASE << 12); \
|
||||
if (a > (BASE << 11)) a -= (BASE << 11); \
|
||||
if (a > (BASE << 10)) a -= (BASE << 10); \
|
||||
if (a > (BASE << 9)) a -= (BASE << 9); \
|
||||
if (a > (BASE << 8)) a -= (BASE << 8); \
|
||||
if (a > (BASE << 7)) a -= (BASE << 7); \
|
||||
if (a > (BASE << 6)) a -= (BASE << 6); \
|
||||
if (a > (BASE << 5)) a -= (BASE << 5); \
|
||||
if (a > (BASE << 4)) a -= (BASE << 4); \
|
||||
if (a > (BASE << 3)) a -= (BASE << 3); \
|
||||
if (a > (BASE << 2)) a -= (BASE << 2); \
|
||||
if (a > (BASE << 1)) a -= (BASE << 1); \
|
||||
if (a > BASE) a -= BASE; \
|
||||
} while (0)
|
||||
#else
|
||||
# define MOD(a) a %= BASE
|
||||
#endif
|
||||
|
||||
/* ========================================================================= */
|
||||
uLong ZEXPORT adler32(adler, buf, len)
|
||||
uLong adler;
|
||||
@@ -42,8 +67,8 @@ uLong ZEXPORT adler32(adler, buf, len)
|
||||
s1 += *buf++;
|
||||
s2 += s1;
|
||||
} while (--k);
|
||||
s1 %= BASE;
|
||||
s2 %= BASE;
|
||||
MOD(s1);
|
||||
MOD(s2);
|
||||
}
|
||||
return (s2 << 16) | s1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user