summaryrefslogtreecommitdiffstats
path: root/Objects/fileobject.c
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2014-05-08 17:26:04 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2014-05-08 17:26:04 (GMT)
commitb0acc1b0a35905fa8dc3d3d10581602b5129c87a (patch)
treefa146c6ee8b1af10f8d05f2c104c9ae7c69e68d7 /Objects/fileobject.c
parent9ba90c9f06157bd17dc5ba569e3314832873f260 (diff)
downloadcpython-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.c14
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;