Patch #1014992: Never return more than a line from readline.
Will backport to 2.3.
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index 2d5bf64..06d8590 100644
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -509,14 +509,12 @@
nl = min(nl, size)
else:
size -= len(self.linebuffer)
- while nl < 0:
+ while (nl < 0 and size > 0):
buf = self.read(min(size, 100))
if not buf:
break
self.linebuffer += buf
size -= len(buf)
- if size <= 0:
- break
nl = self.linebuffer.find("\n")
if nl == -1:
s = self.linebuffer