• Lars Gustäbel's avatar
    Issue #11224: Improved sparse file read support (r85916) introduced a · dd071045
    Lars Gustäbel yazdı
    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.
    dd071045
tarfile.py 90.2 KB