Commit b01138a6 authored by Benjamin Peterson's avatar Benjamin Peterson

readline() args must be an int #3521

parent 34596a90
......@@ -460,6 +460,8 @@ class IOBase(metaclass=abc.ABCMeta):
return 1
if limit is None:
limit = -1
elif not isinstance(limit, int):
raise TypeError("limit must be an integer")
res = bytearray()
while limit < 0 or len(res) < limit:
b = self.read(nreadahead())
......@@ -1741,6 +1743,8 @@ class TextIOWrapper(TextIOBase):
raise ValueError("read from closed file")
if limit is None:
limit = -1
elif not isinstance(limit, int):
raise TypeError("limit must be an integer")
# Grab all the decoded text (we will rewind any extra bits later).
line = self._get_decoded_chars()
......
......@@ -319,7 +319,7 @@ class IOTest(unittest.TestCase):
f.close()
def test_readline(self):
f = io.open(support.TESTFN, "wb")
f = self.open(support.TESTFN, "wb")
f.write(b"abc\ndef\nxyzzy\nfoo\x00bar\nanother line")
f.close()
f = self.open(support.TESTFN, "rb")
......@@ -329,7 +329,10 @@ class IOTest(unittest.TestCase):
self.assertEqual(f.readline(4), b"zzy\n")
self.assertEqual(f.readline(), b"foo\x00bar\n")
self.assertEqual(f.readline(), b"another line")
self.assertRaises(TypeError, f.readline, 5.3)
f.close()
f = self.open(support.TESTFN, "r")
self.assertRaises(TypeError, f.readline, 5.3)
def test_raw_bytes_io(self):
f = self.BytesIO()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment