]> granicus.if.org Git - python/commitdiff
Stream functions like read() are supposed to return bytes, not buffer.
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>
Thu, 22 Nov 2007 21:33:52 +0000 (21:33 +0000)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>
Thu, 22 Nov 2007 21:33:52 +0000 (21:33 +0000)
Now multibytecodec directly works with PyStrings, and disallow PyBytes.

Modules/cjkcodecs/multibytecodec.c

index 3e4e22d03216676c9d171cfd97ef93d29e83485a..a05a017360cdf54934dfe4cffcc9d5baea820d39 100644 (file)
@@ -1230,15 +1230,7 @@ mbstreamreader_iread(MultibyteStreamReaderObject *self,
                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 @@ mbstreamreader_iread(MultibyteStreamReaderObject *self,
                        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;