]> granicus.if.org Git - python/commit
Issue #11224: Improved sparse file read support (r85916) introduced a
authorLars Gustäbel <lars@gustaebel.de>
Wed, 23 Feb 2011 11:42:22 +0000 (11:42 +0000)
committerLars Gustäbel <lars@gustaebel.de>
Wed, 23 Feb 2011 11:42:22 +0000 (11:42 +0000)
commitdd071045e776e1c3e8cf6750a2fd1d0958bf19b3
tree3afb00727522ffb897602ec1ae5d2a9ccfd3dce4
parent3eeee833915b96a15c60eafc317bb6822af2084c
Issue #11224: Improved sparse file read support (r85916) introduced a
regression in _FileInFile which is used in file-like objects returned
by TarFile.extractfile(). The inefficient design of the
_FileInFile.read() method causes various dramatic side-effects and
errors:

  - The data segment of a file member is read completely into memory
    every(!) time a small block is accessed. This is not only slow
    but may cause unexpected MemoryErrors with very large files.
  - Reading members from compressed tar archives is even slower
    because of the excessive backwards seeking which is done when the
    same data segment is read over and over again.
  - As a backwards seek on a TarFile opened in stream mode is not
    possible, using extractfile() fails with a StreamError.
Lib/tarfile.py
Lib/test/test_tarfile.py
Misc/NEWS