[Python-3000-checkins] r59124 - python/branches/py3k/Modules/cjkcodecs/multibytecodec.c
amaury.forgeotdarc
python-3000-checkins at python.org
Thu Nov 22 22:33:52 CET 2007
Author: amaury.forgeotdarc
Date: Thu Nov 22 22:33:52 2007
New Revision: 59124
Modified:
python/branches/py3k/Modules/cjkcodecs/multibytecodec.c
Log:
Stream functions like read() are supposed to return bytes, not buffer.
Now multibytecodec directly works with PyStrings, and disallow PyBytes.
Modified: python/branches/py3k/Modules/cjkcodecs/multibytecodec.c
==============================================================================
--- python/branches/py3k/Modules/cjkcodecs/multibytecodec.c (original)
+++ python/branches/py3k/Modules/cjkcodecs/multibytecodec.c Thu Nov 22 22:33:52 2007
@@ -1230,15 +1230,7 @@
if (cres == NULL)
goto errorexit;
- if (PyString_Check(cres)) {
- PyObject *cres2 = PyBytes_FromObject(cres);
- if (cres2 == NULL)
- return NULL;
- Py_DECREF(cres);
- cres = cres2;
- }
-
- if (!PyBytes_Check(cres)) {
+ if (!PyString_Check(cres)) {
PyErr_Format(PyExc_TypeError,
"stream function returned a "
"non-bytes object (%.100s)",
@@ -1246,28 +1238,28 @@
goto errorexit;
}
- endoffile = (PyBytes_GET_SIZE(cres) == 0);
+ endoffile = (PyString_GET_SIZE(cres) == 0);
if (self->pendingsize > 0) {
PyObject *ctr;
char *ctrdata;
- rsize = PyBytes_GET_SIZE(cres) + self->pendingsize;
- ctr = PyBytes_FromStringAndSize(NULL, rsize);
+ rsize = PyString_GET_SIZE(cres) + self->pendingsize;
+ ctr = PyString_FromStringAndSize(NULL, rsize);
if (ctr == NULL)
goto errorexit;
- ctrdata = PyBytes_AS_STRING(ctr);
+ ctrdata = PyString_AS_STRING(ctr);
memcpy(ctrdata, self->pending, self->pendingsize);
memcpy(ctrdata + self->pendingsize,
- PyBytes_AS_STRING(cres),
- PyBytes_GET_SIZE(cres));
+ PyString_AS_STRING(cres),
+ PyString_GET_SIZE(cres));
Py_DECREF(cres);
cres = ctr;
self->pendingsize = 0;
}
- rsize = PyBytes_GET_SIZE(cres);
- if (decoder_prepare_buffer(&buf, PyBytes_AS_STRING(cres),
+ rsize = PyString_GET_SIZE(cres);
+ if (decoder_prepare_buffer(&buf, PyString_AS_STRING(cres),
rsize) != 0)
goto errorexit;
More information about the Python-3000-checkins
mailing list