diff options
| author | Antoine Pitrou <solipsis@pitrou.net> | 2014-05-08 17:26:04 (GMT) |
|---|---|---|
| committer | Antoine Pitrou <solipsis@pitrou.net> | 2014-05-08 17:26:04 (GMT) |
| commit | b0acc1b0a35905fa8dc3d3d10581602b5129c87a (patch) | |
| tree | fa146c6ee8b1af10f8d05f2c104c9ae7c69e68d7 /Objects/fileobject.c | |
| parent | 9ba90c9f06157bd17dc5ba569e3314832873f260 (diff) | |
| download | cpython-b0acc1b0a35905fa8dc3d3d10581602b5129c87a.zip cpython-b0acc1b0a35905fa8dc3d3d10581602b5129c87a.tar.gz cpython-b0acc1b0a35905fa8dc3d3d10581602b5129c87a.tar.bz2 | |
Issue #21350: Fix file.writelines() to accept arbitrary buffer objects, as advertised.
Patch by Brian Kearns.
Diffstat (limited to 'Objects/fileobject.c')
| -rw-r--r-- | Objects/fileobject.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/Objects/fileobject.c b/Objects/fileobject.c index c5e0961..5594058 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -1941,13 +1941,13 @@ file_writelines(PyFileObject *f, PyObject *seq) PyObject *v = PyList_GET_ITEM(list, i); if (!PyString_Check(v)) { const char *buffer; - if (((f->f_binary && - PyObject_AsReadBuffer(v, - (const void**)&buffer, - &len)) || - PyObject_AsCharBuffer(v, - &buffer, - &len))) { + int res; + if (f->f_binary) { + res = PyObject_AsReadBuffer(v, (const void**)&buffer, &len); + } else { + res = PyObject_AsCharBuffer(v, &buffer, &len); + } + if (res) { PyErr_SetString(PyExc_TypeError, "writelines() argument must be a sequence of strings"); goto error; |
