diff options
| author | Guido van Rossum <guido@python.org> | 1999-04-12 14:34:16 (GMT) | 
|---|---|---|
| committer | Guido van Rossum <guido@python.org> | 1999-04-12 14:34:16 (GMT) | 
| commit | 95bdd0b60466f38166e86b83d27ecff3df0352d5 (patch) | |
| tree | 60b08c43d6a0b91369346454ac35f8a736144530 /Lib/gzip.py | |
| parent | 65f685b7aabf6b9526fc765235bbe10b979b6dcc (diff) | |
| download | cpython-95bdd0b60466f38166e86b83d27ecff3df0352d5.zip cpython-95bdd0b60466f38166e86b83d27ecff3df0352d5.tar.gz cpython-95bdd0b60466f38166e86b83d27ecff3df0352d5.tar.bz2  | |
Two different changes.
1. Jack Jansen reports that on the Mac, the time may be negative, and
solves this by adding a write32u() function that writes an unsigned
long.
2. On 64-bit platforms the CRC comparison fails; I've fixed this by
casting both values to be compared to "unsigned long" i.e. modulo
0x100000000L.
Diffstat (limited to 'Lib/gzip.py')
| -rw-r--r-- | Lib/gzip.py | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/Lib/gzip.py b/Lib/gzip.py index 9efeaf0..1c196a8 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -17,6 +17,9 @@ READ, WRITE = 1, 2  def write32(output, value):      output.write(struct.pack("<l", value)) +def write32u(output, value): +    output.write(struct.pack("<L", value)) +  def read32(input):      return struct.unpack("<l", input.read(4))[0] @@ -83,7 +86,7 @@ class GzipFile:          if fname:              flags = FNAME          self.fileobj.write(chr(flags)) -        write32(self.fileobj, int(time.time())) +        write32u(self.fileobj, long(time.time()))          self.fileobj.write('\002')          self.fileobj.write('\377')          if fname: @@ -231,7 +234,7 @@ class GzipFile:          self.fileobj.seek(-8, 1)          crc32 = read32(self.fileobj)          isize = read32(self.fileobj) -        if crc32 != self.crc: +        if crc32%0x100000000L != self.crc%0x100000000L:              raise ValueError, "CRC check failed"          elif isize != self.size:              raise ValueError, "Incorrect length of data produced"  | 
