[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