Issue #17693: Fix memory/reference leaks
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 @@
     PyObject *inbuf = NULL;
     Py_ssize_t inpos, datalen;
     PyObject *origpending = NULL;
-    wchar_t *data;
 
     if (PyUnicode_Check(unistr))
         ucvt = NULL;
@@ -754,10 +753,6 @@
         }
     }
 
-    data = PyUnicode_AsUnicodeAndSize(unistr, &datalen);
-    if (data == NULL)
-        goto errorexit;
-
     if (ctx->pending) {
         PyObject *inbuf_tmp;
 
@@ -793,6 +788,7 @@
         origpending = NULL;
         goto errorexit;
     }
+    Py_XDECREF(origpending);
 
     if (inpos < datalen) {
         if (datalen - inpos > MAXENCPENDING) {
@@ -808,6 +804,7 @@
         }
     }
 
+    Py_DECREF(inbuf);
     Py_XDECREF(ucvt);
     return r;
 
@@ -815,6 +812,7 @@
     Py_XDECREF(r);
     Py_XDECREF(ucvt);
     Py_XDECREF(origpending);
+    Py_XDECREF(inbuf);
     return NULL;
 }