[Python-checkins] cpython: Fix a Py_UCS4 / Py_UNICODE mixup.

antoine.pitrou python-checkins at python.org
Fri Oct 7 04:39:07 CEST 2011


http://hg.python.org/cpython/rev/27f6fd87375f
changeset:   72783:27f6fd87375f
user:        Antoine Pitrou <solipsis at pitrou.net>
date:        Fri Oct 07 04:35:30 2011 +0200
summary:
  Fix a Py_UCS4 / Py_UNICODE mixup.
This worked under Unix because wchar_t is 4 bytes wide.

files:
  Modules/_csv.c |  11 ++++++++---
  1 files changed, 8 insertions(+), 3 deletions(-)


diff --git a/Modules/_csv.c b/Modules/_csv.c
--- a/Modules/_csv.c
+++ b/Modules/_csv.c
@@ -1127,6 +1127,7 @@
 {
     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 @@
     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,

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list