mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Make test_codecs work. The CJK codecs now use bytes instead of str8 for
their encoded input/output.
This commit is contained in:
parent
bbbd4fdba2
commit
f4cfc8f6bb
2 changed files with 32 additions and 29 deletions
|
@ -166,15 +166,15 @@ expand_encodebuffer(MultibyteEncodeBuffer *buf, Py_ssize_t esize)
|
|||
Py_ssize_t orgpos, orgsize;
|
||||
|
||||
orgpos = (Py_ssize_t)((char *)buf->outbuf -
|
||||
PyString_AS_STRING(buf->outobj));
|
||||
orgsize = PyString_GET_SIZE(buf->outobj);
|
||||
if (_PyString_Resize(&buf->outobj, orgsize + (
|
||||
PyBytes_AS_STRING(buf->outobj));
|
||||
orgsize = PyBytes_GET_SIZE(buf->outobj);
|
||||
if (PyBytes_Resize(buf->outobj, orgsize + (
|
||||
esize < (orgsize >> 1) ? (orgsize >> 1) | 1 : esize)) == -1)
|
||||
return -1;
|
||||
|
||||
buf->outbuf = (unsigned char *)PyString_AS_STRING(buf->outobj) +orgpos;
|
||||
buf->outbuf_end = (unsigned char *)PyString_AS_STRING(buf->outobj)
|
||||
+ PyString_GET_SIZE(buf->outobj);
|
||||
buf->outbuf = (unsigned char *)PyBytes_AS_STRING(buf->outobj) +orgpos;
|
||||
buf->outbuf_end = (unsigned char *)PyBytes_AS_STRING(buf->outobj)
|
||||
+ PyBytes_GET_SIZE(buf->outobj);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -322,6 +322,7 @@ multibytecodec_encerror(MultibyteCodec *codec,
|
|||
goto errorexit;
|
||||
}
|
||||
|
||||
assert(PyString_Check(retstr));
|
||||
retstrsize = PyString_GET_SIZE(retstr);
|
||||
REQUIRE_ENCODEBUFFER(buf, retstrsize);
|
||||
|
||||
|
@ -468,16 +469,16 @@ multibytecodec_encode(MultibyteCodec *codec,
|
|||
Py_ssize_t finalsize, r = 0;
|
||||
|
||||
if (datalen == 0)
|
||||
return PyString_FromString("");
|
||||
return PyBytes_FromStringAndSize(NULL, 0);
|
||||
|
||||
buf.excobj = NULL;
|
||||
buf.inbuf = buf.inbuf_top = *data;
|
||||
buf.inbuf_end = buf.inbuf_top + datalen;
|
||||
buf.outobj = PyString_FromStringAndSize(NULL, datalen * 2 + 16);
|
||||
buf.outobj = PyBytes_FromStringAndSize(NULL, datalen * 2 + 16);
|
||||
if (buf.outobj == NULL)
|
||||
goto errorexit;
|
||||
buf.outbuf = (unsigned char *)PyString_AS_STRING(buf.outobj);
|
||||
buf.outbuf_end = buf.outbuf + PyString_GET_SIZE(buf.outobj);
|
||||
buf.outbuf = (unsigned char *)PyBytes_AS_STRING(buf.outobj);
|
||||
buf.outbuf_end = buf.outbuf + PyBytes_GET_SIZE(buf.outobj);
|
||||
|
||||
while (buf.inbuf < buf.inbuf_end) {
|
||||
Py_ssize_t inleft, outleft;
|
||||
|
@ -512,10 +513,10 @@ multibytecodec_encode(MultibyteCodec *codec,
|
|||
}
|
||||
|
||||
finalsize = (Py_ssize_t)((char *)buf.outbuf -
|
||||
PyString_AS_STRING(buf.outobj));
|
||||
PyBytes_AS_STRING(buf.outobj));
|
||||
|
||||
if (finalsize != PyString_GET_SIZE(buf.outobj))
|
||||
if (_PyString_Resize(&buf.outobj, finalsize) == -1)
|
||||
if (finalsize != PyBytes_GET_SIZE(buf.outobj))
|
||||
if (PyBytes_Resize(buf.outobj, finalsize) == -1)
|
||||
goto errorexit;
|
||||
|
||||
Py_XDECREF(buf.excobj);
|
||||
|
@ -1223,10 +1224,11 @@ mbstreamreader_iread(MultibyteStreamReaderObject *self,
|
|||
if (cres == NULL)
|
||||
goto errorexit;
|
||||
|
||||
if (!PyString_Check(cres)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"stream function returned a "
|
||||
"non-string object");
|
||||
if (!PyBytes_Check(cres)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"stream function returned a "
|
||||
"non-string object (%.100s)",
|
||||
cres->ob_type->tp_name);
|
||||
goto errorexit;
|
||||
}
|
||||
|
||||
|
@ -1234,22 +1236,22 @@ mbstreamreader_iread(MultibyteStreamReaderObject *self,
|
|||
PyObject *ctr;
|
||||
char *ctrdata;
|
||||
|
||||
rsize = PyString_GET_SIZE(cres) + self->pendingsize;
|
||||
ctr = PyString_FromStringAndSize(NULL, rsize);
|
||||
rsize = PyBytes_GET_SIZE(cres) + self->pendingsize;
|
||||
ctr = PyBytes_FromStringAndSize(NULL, rsize);
|
||||
if (ctr == NULL)
|
||||
goto errorexit;
|
||||
ctrdata = PyString_AS_STRING(ctr);
|
||||
ctrdata = PyBytes_AS_STRING(ctr);
|
||||
memcpy(ctrdata, self->pending, self->pendingsize);
|
||||
memcpy(ctrdata + self->pendingsize,
|
||||
PyString_AS_STRING(cres),
|
||||
PyString_GET_SIZE(cres));
|
||||
PyBytes_AS_STRING(cres),
|
||||
PyBytes_GET_SIZE(cres));
|
||||
Py_DECREF(cres);
|
||||
cres = ctr;
|
||||
self->pendingsize = 0;
|
||||
}
|
||||
|
||||
rsize = PyString_GET_SIZE(cres);
|
||||
if (decoder_prepare_buffer(&buf, PyString_AS_STRING(cres),
|
||||
rsize = PyBytes_GET_SIZE(cres);
|
||||
if (decoder_prepare_buffer(&buf, PyBytes_AS_STRING(cres),
|
||||
rsize) != 0)
|
||||
goto errorexit;
|
||||
|
||||
|
@ -1594,6 +1596,7 @@ mbstreamwriter_reset(MultibyteStreamWriterObject *self)
|
|||
if (pwrt == NULL)
|
||||
return NULL;
|
||||
|
||||
assert(PyString_Check(pwrt));
|
||||
if (PyString_Size(pwrt) > 0) {
|
||||
PyObject *wr;
|
||||
wr = PyObject_CallMethod(self->stream, "write", "O", pwrt);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue