[Python-checkins] r55700 - python/branches/cpy_merge/Modules/_string_iomodule.c
alexandre.vassalotti
python-checkins at python.org
Thu May 31 01:28:07 CEST 2007
Author: alexandre.vassalotti
Date: Thu May 31 01:28:06 2007
New Revision: 55700
Modified:
python/branches/cpy_merge/Modules/_string_iomodule.c
Log:
Fix string_io_writelines().
Rename a few variables.
Modified: python/branches/cpy_merge/Modules/_string_iomodule.c
==============================================================================
--- python/branches/cpy_merge/Modules/_string_iomodule.c (original)
+++ python/branches/cpy_merge/Modules/_string_iomodule.c Thu May 31 01:28:06 2007
@@ -56,7 +56,7 @@
/* Internal routine for writing a string of bytes to the buffer of a StringIO
object. Returns the number of bytes wrote. */
static Py_ssize_t
-write_bytes(StringIOObject *self, const Py_UNICODE *c, Py_ssize_t l)
+write_str(StringIOObject *self, const Py_UNICODE *ustr, Py_ssize_t l)
{
Py_ssize_t newl;
@@ -79,7 +79,7 @@
}
}
- memcpy(self->buf + self->pos, c, l * sizeof(Py_UNICODE));
+ memcpy(self->buf + self->pos, ustr, l * sizeof(Py_UNICODE));
assert(self->pos + l < PY_SSIZE_T_MAX);
self->pos += l;
@@ -320,16 +320,18 @@
static PyObject *
string_io_write(StringIOObject *self, PyObject *args)
{
- const Py_UNICODE *c;
- Py_ssize_t l;
+ const Py_UNICODE *ustr;
+ Py_ssize_t n;
if (self->buf == NULL)
return err_closed();
- if (!PyArg_ParseTuple(args, "u#:write", &c, &l))
+ if (!PyArg_ParseTuple(args,
+ "u#;write() may only be called on"
+ "unicode strings", &ustr, &n))
return NULL;
- if (write_bytes(self, c, l) == -1)
+ if (write_str(self, ustr, n) == -1)
return NULL;
Py_RETURN_NONE;
@@ -349,15 +351,18 @@
while ((item = PyIter_Next(it)) != NULL) {
Py_ssize_t n;
- Py_UNICODE *c;
- if (PyString_AsStringAndSize(item, &c, &n) == -1) {
+ Py_UNICODE *ustr;
+ if ((ustr = PyUnicode_AsUnicode(item)) == NULL) {
+ PyErr_SetString(PyExc_TypeError,
+ "Need a list of unicode objects");
Py_DECREF(it);
Py_DECREF(item);
return NULL;
}
+ n = PyUnicode_GetSize(item);
Py_DECREF(item);
- if (write_bytes(self, c, n) == -1) {
+ if (write_str(self, ustr, n) == -1) {
Py_DECREF(it);
return NULL;
}
@@ -417,7 +422,7 @@
self->string_size = 0;
if (n > 0) {
- if (write_bytes(self, buf, n) == -1)
+ if (write_str(self, buf, n) == -1)
return NULL;
self->pos = 0;
}
More information about the Python-checkins
mailing list