@@ -166,6 +166,10 @@ def test_read(self):
166166 memio .seek (0 )
167167 self .assertEqual (memio .read (None ), buf )
168168 self .assertRaises (TypeError , memio .read , '' )
169+ memio .seek (len (buf ) + 1 )
170+ self .assertEqual (memio .read (1 ), self .EOF )
171+ memio .seek (len (buf ) + 1 )
172+ self .assertEqual (memio .read (), self .EOF )
169173 memio .close ()
170174 self .assertRaises (ValueError , memio .read )
171175
@@ -185,6 +189,9 @@ def test_readline(self):
185189 self .assertEqual (memio .readline (- 1 ), buf )
186190 memio .seek (0 )
187191 self .assertEqual (memio .readline (0 ), self .EOF )
192+ # Issue #24989: Buffer overread
193+ memio .seek (len (buf ) * 2 + 1 )
194+ self .assertEqual (memio .readline (), self .EOF )
188195
189196 buf = self .buftype ("1234567890\n " )
190197 memio = self .ioclass ((buf * 3 )[:- 1 ])
@@ -217,6 +224,9 @@ def test_readlines(self):
217224 memio .seek (0 )
218225 self .assertEqual (memio .readlines (None ), [buf ] * 10 )
219226 self .assertRaises (TypeError , memio .readlines , '' )
227+ # Issue #24989: Buffer overread
228+ memio .seek (len (buf ) * 10 + 1 )
229+ self .assertEqual (memio .readlines (), [])
220230 memio .close ()
221231 self .assertRaises (ValueError , memio .readlines )
222232
@@ -238,6 +248,9 @@ def test_iterator(self):
238248 self .assertEqual (line , buf )
239249 i += 1
240250 self .assertEqual (i , 10 )
251+ # Issue #24989: Buffer overread
252+ memio .seek (len (buf ) * 10 + 1 )
253+ self .assertEqual (list (memio ), [])
241254 memio = self .ioclass (buf * 2 )
242255 memio .close ()
243256 self .assertRaises (ValueError , memio .__next__ )
0 commit comments