Merged revisions 70523 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/trunk

........
  r70523 | lars.gustaebel | 2009-03-22 21:09:33 +0100 (Sun, 22 Mar 2009) | 5 lines

  Issue #5068: Fixed the tarfile._BZ2Proxy.read() method that would loop
  forever on incomplete input. That caused tarfile.open() to hang when used
  with mode 'r' or 'r:bz2' and a fileobj argument that contained no data or
  partial bzip2 compressed data.
........
This commit is contained in:
Lars Gustäbel 2009-03-22 20:34:29 +00:00
parent db08306bc2
commit 42e0091208
3 changed files with 34 additions and 5 deletions

View file

@ -639,12 +639,11 @@ class _BZ2Proxy(object):
def read(self, size):
x = len(self.buf)
while x < size:
try:
raw = self.fileobj.read(self.blocksize)
data = self.bz2obj.decompress(raw)
self.buf += data
except EOFError:
raw = self.fileobj.read(self.blocksize)
if not raw:
break
data = self.bz2obj.decompress(raw)
self.buf += data
x += len(data)
buf = self.buf[:size]