summaryrefslogtreecommitdiffstats
path: root/Modules/cjkcodecs/multibytecodec.c
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2013-04-14 16:11:41 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2013-04-14 16:11:41 (GMT)
commit322cc7438c081e19d0402f53e720d6b0cd58b227 (patch)
tree296b29b7a30d1224f960d0ea1681041aedfe50a9 /Modules/cjkcodecs/multibytecodec.c
parentbf71f7d654244bbc9a089e3f539fa78d283e2010 (diff)
downloadcpython-322cc7438c081e19d0402f53e720d6b0cd58b227.zip
cpython-322cc7438c081e19d0402f53e720d6b0cd58b227.tar.gz
cpython-322cc7438c081e19d0402f53e720d6b0cd58b227.tar.bz2
Issue #17693: Fix memory/reference leaks
Diffstat (limited to 'Modules/cjkcodecs/multibytecodec.c')
-rw-r--r--Modules/cjkcodecs/multibytecodec.c8
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;
}