Commit 12424bc0 authored by Skip Montanaro's avatar Skip Montanaro

force gzip module to open files using 'b'inary mode.

closes patch #536278.
parent d4e5be53
...@@ -35,6 +35,10 @@ class GzipFile: ...@@ -35,6 +35,10 @@ class GzipFile:
def __init__(self, filename=None, mode=None, def __init__(self, filename=None, mode=None,
compresslevel=9, fileobj=None): compresslevel=9, fileobj=None):
# guarantee the file is opened in binary mode on platforms
# that care about that sort of thing
if mode and 'b' not in mode:
mode += 'b'
if fileobj is None: if fileobj is None:
fileobj = self.myfileobj = __builtin__.open(filename, mode or 'rb') fileobj = self.myfileobj = __builtin__.open(filename, mode or 'rb')
if filename is None: if filename is None:
......
...@@ -18,7 +18,7 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */ ...@@ -18,7 +18,7 @@ data2 = """/* zlibmodule.c -- gzip-compatible data compression */
f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close() f = gzip.GzipFile(filename, 'wb') ; f.write(data1 * 50) ; f.close()
f = gzip.GzipFile(filename, 'rb') ; d = f.read() ; f.close() f = gzip.GzipFile(filename, 'r') ; d = f.read() ; f.close()
verify(d == data1*50) verify(d == data1*50)
# Append to the previous file # Append to the previous file
...@@ -75,4 +75,8 @@ for pos in range(0, 256, 16): ...@@ -75,4 +75,8 @@ for pos in range(0, 256, 16):
f.write('GZ\n') f.write('GZ\n')
f.close() f.close()
f = gzip.GzipFile(filename, 'r')
verify(f.myfileobj.mode == 'rb')
f.close()
os.unlink(filename) os.unlink(filename)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment