]> granicus.if.org Git - python/commitdiff
Fix a Py_UCS4 / Py_UNICODE mixup.
authorAntoine Pitrou <solipsis@pitrou.net>
Fri, 7 Oct 2011 02:35:30 +0000 (04:35 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Fri, 7 Oct 2011 02:35:30 +0000 (04:35 +0200)
This worked under Unix because wchar_t is 4 bytes wide.

Modules/_csv.c

index ee074cf67762727579c6b6704f4b139d0f6a1f6a..1334633bf7e27b44e5e0b7c4956c115d705dc0ff 100644 (file)
@@ -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,