Issue #19053: ZipExtFile.read1() with non-zero argument no more returns empty
bytes until end of data.
diff --git a/Lib/zipfile.py b/Lib/zipfile.py
index 3448c61..92c98ab 100644
--- a/Lib/zipfile.py
+++ b/Lib/zipfile.py
@@ -785,8 +785,11 @@
             buf = self._readbuffer[self._offset:]
             self._readbuffer = b''
             self._offset = 0
-            data = self._read1(self.MAX_N)
-            buf += data
+            while not self._eof:
+                data = self._read1(self.MAX_N)
+                if data:
+                    buf += data
+                    break
             return buf
 
         end = n + self._offset
@@ -800,12 +803,16 @@
         self._readbuffer = b''
         self._offset = 0
         if n > 0:
-            data = self._read1(n)
-            if n < len(data):
-                self._readbuffer = data
-                self._offset = n
-                data = data[:n]
-            buf += data
+            while not self._eof:
+                data = self._read1(n)
+                if n < len(data):
+                    self._readbuffer = data
+                    self._offset = n
+                    buf += data[:n]
+                    break
+                if data:
+                    buf += data
+                    break
         return buf
 
     def _read1(self, n):