From: Victor Stinner Date: Sun, 14 Apr 2013 16:11:41 +0000 (+0200) Subject: Issue #17693: Fix memory/reference leaks X-Git-Tag: v3.4.0a1~921 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=322cc7438c081e19d0402f53e720d6b0cd58b227;p=python Issue #17693: Fix memory/reference leaks --- diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 5a916fd962..4c865eca11 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -738,7 +738,6 @@ encoder_encode_stateful(MultibyteStatefulEncoderContext *ctx, PyObject *inbuf = NULL; Py_ssize_t inpos, datalen; PyObject *origpending = NULL; - wchar_t *data; if (PyUnicode_Check(unistr)) ucvt = NULL; @@ -754,10 +753,6 @@ encoder_encode_stateful(MultibyteStatefulEncoderContext *ctx, } } - data = PyUnicode_AsUnicodeAndSize(unistr, &datalen); - if (data == NULL) - goto errorexit; - if (ctx->pending) { PyObject *inbuf_tmp; @@ -793,6 +788,7 @@ encoder_encode_stateful(MultibyteStatefulEncoderContext *ctx, origpending = NULL; goto errorexit; } + Py_XDECREF(origpending); if (inpos < datalen) { if (datalen - inpos > MAXENCPENDING) { @@ -808,6 +804,7 @@ encoder_encode_stateful(MultibyteStatefulEncoderContext *ctx, } } + Py_DECREF(inbuf); Py_XDECREF(ucvt); return r; @@ -815,6 +812,7 @@ errorexit: Py_XDECREF(r); Py_XDECREF(ucvt); Py_XDECREF(origpending); + Py_XDECREF(inbuf); return NULL; }