[pypy-commit] pypy default: issue1299: BZ2Decompressor.decompress('') does not raise EOFError at
arigo
noreply at buildbot.pypy.org
Fri Oct 26 12:01:40 CEST 2012
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r58432:469ecc21fa11
Date: 2012-10-24 16:45 +0200
http://bitbucket.org/pypy/pypy/changeset/469ecc21fa11/
Log: issue1299: BZ2Decompressor.decompress('') does not raise EOFError at
end-of-stream. Patch by nadeem.vawda.
diff --git a/pypy/module/bz2/interp_bz2.py b/pypy/module/bz2/interp_bz2.py
--- a/pypy/module/bz2/interp_bz2.py
+++ b/pypy/module/bz2/interp_bz2.py
@@ -406,12 +406,16 @@
read += length
def readall(self):
- w_result = self.decompressor.decompress(self.stream.readall())
- if self.decompressor.running:
- raise OperationError(self.space.w_EOFError,
- self.space.wrap("compressed file ended before the logical end-of-the-stream was detected"))
- result = self.space.str_w(w_result)
- self.readlength += len(result)
+ raw = self.stream.readall()
+ if raw:
+ w_result = self.decompressor.decompress(raw)
+ if self.decompressor.running:
+ raise OperationError(self.space.w_EOFError,
+ self.space.wrap("compressed file ended before the logical end-of-the-stream was detected"))
+ result = self.space.str_w(w_result)
+ self.readlength += len(result)
+ else:
+ result = ""
if len(self.buffer) != self.pos:
pos = self.pos
assert pos >= 0
@@ -649,11 +653,11 @@
was found after the end of stream, it'll be ignored and saved in
unused_data attribute."""
- if data == '':
- return self.space.wrap('')
if not self.running:
raise OperationError(self.space.w_EOFError,
self.space.wrap("end of stream was already found"))
+ if data == '':
+ return self.space.wrap('')
in_bufsize = len(data)
diff --git a/pypy/module/bz2/test/test_bz2_compdecomp.py b/pypy/module/bz2/test/test_bz2_compdecomp.py
--- a/pypy/module/bz2/test/test_bz2_compdecomp.py
+++ b/pypy/module/bz2/test/test_bz2_compdecomp.py
@@ -156,6 +156,7 @@
bz2d = BZ2Decompressor()
bz2d.decompress(self.DATA)
raises(EOFError, bz2d.decompress, "foo")
+ raises(EOFError, bz2d.decompress, "")
def test_buffer(self):
from bz2 import BZ2Decompressor
More information about the pypy-commit
mailing list