From 72ca65dce4529906b64710e94a3c004f9cc2712f Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Fri, 7 Oct 2011 04:35:30 +0200 Subject: Fix a Py_UCS4 / Py_UNICODE mixup. This worked under Unix because wchar_t is 4 bytes wide. --- Modules/_csv.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Modules/_csv.c b/Modules/_csv.c index ee074cf..1334633 100644 --- a/Modules/_csv.c +++ b/Modules/_csv.c @@ -1127,6 +1127,7 @@ csv_writerow(WriterObj *self, PyObject *seq) { DialectObj *dialect = self->dialect; Py_ssize_t len, i; + PyObject *line, *result; if (!PySequence_Check(seq)) return PyErr_Format(error_obj, "sequence expected"); @@ -1186,9 +1187,13 @@ csv_writerow(WriterObj *self, PyObject *seq) if (!join_append_lineterminator(self)) return 0; - return PyObject_CallFunction(self->writeline, - "(u#)", self->rec, - self->rec_len); + line = PyUnicode_FromKindAndData(PyUnicode_4BYTE_KIND, + (void *) self->rec, self->rec_len); + if (line == NULL) + return NULL; + result = PyObject_CallFunctionObjArgs(self->writeline, line, NULL); + Py_DECREF(line); + return result; } PyDoc_STRVAR(csv_writerows_doc, -- cgit v0.12