From: Hirokazu Yamamoto Date: Sun, 17 Aug 2008 12:59:57 +0000 (+0000) Subject: Issue #3575: Incremental decoder's decode function now takes bytearray X-Git-Tag: v3.0b3~83 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=078f0f5a6d7dd44ad58b3a039ca1c34c5d9449b5;p=python Issue #3575: Incremental decoder's decode function now takes bytearray by using 's*' instead of 't#' --- diff --git a/Misc/NEWS b/Misc/NEWS index 0cbebc51ef..0e2adb0c68 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -30,6 +30,9 @@ Core and Builtins Library ------- +- Issue #3575: Incremental decoder's decode function now takes bytearray + by using 's*' instead of 't#'. + - Issue #2222: Fixed reference leak when occured os.rename() fails unicode conversion on 2nd parameter. (windows only) diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 95b2278e6c..67c25b1646 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -1034,12 +1034,15 @@ mbidecoder_decode(MultibyteIncrementalDecoderObject *self, { MultibyteDecodeBuffer buf; char *data, *wdata = NULL; + Py_buffer pdata; Py_ssize_t wsize, finalsize = 0, size, origpending; int final = 0; - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "t#|i:decode", - incrementalkwarglist, &data, &size, &final)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i:decode", + incrementalkwarglist, &pdata, &final)) return NULL; + data = pdata.buf; + size = pdata.len; buf.outobj = buf.excobj = NULL; origpending = self->pendingsize; @@ -1088,12 +1091,14 @@ mbidecoder_decode(MultibyteIncrementalDecoderObject *self, if (PyUnicode_Resize(&buf.outobj, finalsize) == -1) goto errorexit; + PyBuffer_Release(&pdata); if (wdata != data) PyMem_Del(wdata); Py_XDECREF(buf.excobj); return buf.outobj; errorexit: + PyBuffer_Release(&pdata); if (wdata != NULL && wdata != data) PyMem_Del(wdata); Py_XDECREF(buf.excobj);