Index: Objects/unicodeobject.c =================================================================== --- Objects/unicodeobject.c (revision 66051) +++ Objects/unicodeobject.c (working copy) @@ -1357,8 +1357,8 @@ PyOS_snprintf(msg, sizeof(msg), "encoder %s returned buffer instead of bytes", encoding); + Py_DECREF(v); if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0) { - v = NULL; goto onError; } v = PyBytes_FromStringAndSize(PyByteArray_AS_STRING(v), Py_SIZE(v)); @@ -1367,7 +1367,8 @@ PyErr_Format(PyExc_TypeError, "encoder did not return a bytes object (type=%.400s)", Py_TYPE(v)->tp_name); - v = NULL; + Py_DECREF(v); + goto onError; } return v;