From 043540088ae75f79179de2fe4ec147674bcc2a5f Mon Sep 17 00:00:00 2001 From: Nadeem Vawda Date: Sun, 5 Aug 2012 14:45:41 +0200 Subject: #15546: Also fix GzipFile.peek(). --- Lib/gzip.py | 6 ++++-- Misc/NEWS | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Lib/gzip.py b/Lib/gzip.py index 5bcfe61..b6656a9 100644 --- a/Lib/gzip.py +++ b/Lib/gzip.py @@ -413,8 +413,10 @@ class GzipFile(io.BufferedIOBase): if self.fileobj is None: return b'' try: - # 1024 is the same buffering heuristic used in read() - self._read(max(n, 1024)) + # Ensure that we don't return b"" if we haven't reached EOF. + while self.extrasize == 0: + # 1024 is the same buffering heuristic used in read() + self._read(max(n, 1024)) except EOFError: pass offset = self.offset - self.extrastart diff --git a/Misc/NEWS b/Misc/NEWS index 92a4d79..53f62a0 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -81,8 +81,8 @@ Library constructor, objects in the ipaddress module no longer implement __index__ (they still implement __int__ as appropriate) -- Issue #15546: Fix handling of pathological input data in the read1() method of - the BZ2File, GzipFile and LZMAFile classes. +- Issue #15546: Fix handling of pathological input data in the peek() and + read1() methods of the BZ2File, GzipFile and LZMAFile classes. - Issue #13052: Fix IDLE crashing when replace string in Search/Replace dialog ended with '\'. Patch by Roger Serwy. -- cgit v0.12