following a report of problems with Linux/alpha I've changed zlib.c to
authorAndrew Tridgell <tridge@samba.org>
Thu, 18 Dec 1997 11:18:32 +0000 (11:18 +0000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 18 Dec 1997 11:18:32 +0000 (11:18 +0000)
use uint32 instead of "long" in several places. Apparently this fixes
things on the alpha. The strange thing is that my own tests on a
OSF/alpha box and a 64 bit IRIX box showed no problems. I wonder what
was actually going wrong? I'll email the zlib maintainers and let them
know.

lib/zlib.c
lib/zlib.h

index 9d732bb..a4cf064 100644 (file)
@@ -252,7 +252,7 @@ typedef struct deflate_state {
      *   hash_shift * MIN_MATCH >= hash_bits
      */
 
-    long block_start;
+    Long block_start;
     /* Window position at the beginning of the current output block. Gets
      * negative when the window is moved backwards.
      */
@@ -1122,7 +1122,7 @@ local void fill_window(s)
             s->match_start -= wsize;
             s->strstart    -= wsize; /* we now have strstart >= MAX_DIST */
 
-            s->block_start -= (long) wsize;
+            s->block_start -= (Long) wsize;
 
             /* Slide the hash table (could be avoided with 32 bit values
                at the expense of memory usage):
@@ -1187,7 +1187,7 @@ local void fill_window(s)
 #define FLUSH_BLOCK_ONLY(s, flush) { \
    ct_flush_block(s, (s->block_start >= 0L ? \
            (charf *)&s->window[(unsigned)s->block_start] : \
-           (charf *)Z_NULL), (long)s->strstart - s->block_start, (flush)); \
+           (charf *)Z_NULL), (Long)s->strstart - s->block_start, (flush)); \
    s->block_start = s->strstart; \
    flush_pending(s->strm); \
    Tracev((stderr,"[FLUSH]")); \
@@ -1907,8 +1907,8 @@ local void gen_bitlen(s, desc)
             if (m > max_code) continue;
             if (tree[m].Len != (unsigned) bits) {
                 Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
-                s->opt_len += ((long)bits - (long)tree[m].Len)
-                              *(long)tree[m].Freq;
+                s->opt_len += ((Long)bits - (Long)tree[m].Len)
+                              *(Long)tree[m].Freq;
                 tree[m].Len = (ush)bits;
             }
             n--;
@@ -4578,8 +4578,8 @@ uLong adler32(adler, buf, len)
     Bytef *buf;
     uInt len;
 {
-    unsigned long s1 = adler & 0xffff;
-    unsigned long s2 = (adler >> 16) & 0xffff;
+    uLong s1 = adler & 0xffff;
+    uLong s2 = (adler >> 16) & 0xffff;
     int k;
 
     if (buf == Z_NULL) return 1L;
index e3413d6..6ff2ae5 100644 (file)
 
 typedef unsigned char  Byte;  /* 8 bits */
 typedef unsigned int   uInt;  /* 16 bits or more */
-typedef unsigned long  uLong; /* 32 bits or more */
+typedef int32 Long; /* 32 bits or more */
+typedef uint32 uLong; /* 32 bits or more */
 
 typedef Byte FAR Bytef;
 typedef char FAR charf;