On platforms like Win32 which don't support symbolic and hard links, link extraction from a tar archive is simulated: If the link points to a file inside the archive this file is extracted instead of the link. In Greg's case the referenced file comes after the link in the archive which is the reason why iteration breaks: at the point in iteration when the referenced file is needed it is still unknown to the TarFile object which will then search the whole archive exhausting the iterator itself. The patch fixes the TarIter class, so it is able to notice if the TarFile has already loaded all members between two iteration steps.