Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
b3c5d856
Commit
b3c5d856
authored
May 09, 2013
by
Serhiy Storchaka
Browse files
Options
Browse Files
Download
Plain Diff
Issue #16601: Restarting iteration over tarfile no more continues from where
it left off. Patch by Michael Birtwell.
parents
f28dfdd0
263fab94
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
19 additions
and
5 deletions
+19
-5
Lib/tarfile.py
Lib/tarfile.py
+7
-5
Lib/test/test_tarfile.py
Lib/test/test_tarfile.py
+8
-0
Misc/ACKS
Misc/ACKS
+1
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/tarfile.py
View file @
b3c5d856
...
...
@@ -2397,16 +2397,18 @@ class TarIter:
# Fix for SF #1100429: Under rare circumstances it can
# happen that getmembers() is called during iteration,
# which will cause TarIter to stop prematurely.
if not self.tarfile._loaded:
if self.index == 0 and self.tarfile.firstmember is not None:
tarinfo = self.tarfile.next()
elif self.index < len(self.tarfile.members):
tarinfo = self.tarfile.members[self.index]
elif not self.tarfile._loaded:
tarinfo = self.tarfile.next()
if not tarinfo:
self.tarfile._loaded = True
raise StopIteration
else:
try:
tarinfo = self.tarfile.members[self.index]
except IndexError:
raise StopIteration
raise StopIteration
self.index += 1
return tarinfo
...
...
Lib/test/test_tarfile.py
View file @
b3c5d856
...
...
@@ -415,6 +415,14 @@ class MiscReadTest(CommonReadTest):
finally
:
support
.
unlink
(
empty
)
def
test_parallel_iteration
(
self
):
# Issue #16601: Restarting iteration over tarfile continued
# from where it left off.
with
tarfile
.
open
(
self
.
tarname
)
as
tar
:
for
m1
,
m2
in
zip
(
tar
,
tar
):
self
.
assertEqual
(
m1
.
offset
,
m2
.
offset
)
self
.
assertEqual
(
m1
.
get_info
(),
m2
.
get_info
())
class
StreamReadTest
(
CommonReadTest
):
...
...
Misc/ACKS
View file @
b3c5d856
...
...
@@ -118,6 +118,7 @@ Adrian von Bidder
David Binger
Dominic Binks
Philippe Biondi
Michael Birtwell
Stuart Bishop
Roy Bixler
Daniel Black
...
...
Misc/NEWS
View file @
b3c5d856
...
...
@@ -86,6 +86,9 @@ Core and Builtins
Library
-------
- Issue #16601: Restarting iteration over tarfile no more continues from where
it left off. Patch by Michael Birtwell.
- Issue #17289: The readline module now plays nicer with external modules
or applications changing the rl_completer_word_break_characters global
variable. Initial patch by Bradley Froehle.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment