summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_file.py15
-rw-r--r--Objects/fileobject.c4
2 files changed, 17 insertions, 2 deletions
diff --git a/Lib/test/test_file.py b/Lib/test/test_file.py
index c00874d..33a923d 100644
--- a/Lib/test/test_file.py
+++ b/Lib/test/test_file.py
@@ -1,4 +1,5 @@
import os
+from array import array
from test_support import verify, TESTFN
from UserList import UserList
@@ -13,6 +14,13 @@ buf = f.read()
f.close()
verify(buf == '12')
+# verify readinto
+a = array('c', 'x'*10)
+f = open(TESTFN, 'rb')
+n = f.readinto(a)
+f.close()
+verify(buf == a.tostring()[:n])
+
# verify writelines with integers
f = open(TESTFN, 'wb')
try:
@@ -69,6 +77,13 @@ if f.isatty():
if f.closed:
raise TestError, 'file.closed should be false'
+try:
+ f.readinto("")
+except TypeError:
+ pass
+else:
+ raise TestError, 'file.readinto("") should raise a TypeError'
+
f.close()
if not f.closed:
raise TestError, 'file.closed should be true'
diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index ebe0d29..3179574 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -686,7 +686,7 @@ file_readinto(PyFileObject *f, PyObject *args)
if (f->f_fp == NULL)
return err_closed();
- if (!PyArg_Parse(args, "w#", &ptr, &ntodo))
+ if (!PyArg_ParseTuple(args, "w#", &ptr, &ntodo))
return NULL;
ndone = 0;
while (ntodo > 0) {
@@ -1462,7 +1462,7 @@ static PyMethodDef file_methods[] = {
{"truncate", (PyCFunction)file_truncate, METH_VARARGS, truncate_doc},
#endif
{"tell", (PyCFunction)file_tell, METH_NOARGS, tell_doc},
- {"readinto", (PyCFunction)file_readinto, METH_OLDARGS, readinto_doc},
+ {"readinto", (PyCFunction)file_readinto, METH_VARARGS, readinto_doc},
{"readlines", (PyCFunction)file_readlines, METH_VARARGS, readlines_doc},
{"xreadlines", (PyCFunction)file_xreadlines, METH_NOARGS, xreadlines_doc},
{"writelines", (PyCFunction)file_writelines, METH_O, writelines_doc},