diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-04-14 16:11:41 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-04-14 16:11:41 (GMT) |
commit | 322cc7438c081e19d0402f53e720d6b0cd58b227 (patch) | |
tree | 296b29b7a30d1224f960d0ea1681041aedfe50a9 /Modules/cjkcodecs | |
parent | bf71f7d654244bbc9a089e3f539fa78d283e2010 (diff) | |
download | cpython-322cc7438c081e19d0402f53e720d6b0cd58b227.zip cpython-322cc7438c081e19d0402f53e720d6b0cd58b227.tar.gz cpython-322cc7438c081e19d0402f53e720d6b0cd58b227.tar.bz2 |
Issue #17693: Fix memory/reference leaks
Diffstat (limited to 'Modules/cjkcodecs')
-rw-r--r-- | Modules/cjkcodecs/multibytecodec.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 5a916fd..4c865ec 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; } |