]> granicus.if.org Git - python/commitdiff
Issue #17693: Fix memory/reference leaks
authorVictor Stinner <victor.stinner@gmail.com>
Sun, 14 Apr 2013 16:11:41 +0000 (18:11 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Sun, 14 Apr 2013 16:11:41 +0000 (18:11 +0200)
Modules/cjkcodecs/multibytecodec.c

index 5a916fd96297dd89895a8900d660c86bad0caef7..4c865eca11458c16ee2d7ca120a92d45e0475f3b 100644 (file)
@@ -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;
 }