Index: Objects/unicodeobject.c =================================================================== --- Objects/unicodeobject.c (révision 66059) +++ Objects/unicodeobject.c (copie de travail) @@ -1354,20 +1354,23 @@ goto onError; if (PyByteArray_Check(v)) { char msg[100]; + PyObject *old_v; PyOS_snprintf(msg, sizeof(msg), "encoder %s returned buffer instead of bytes", encoding); if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 1) < 0) { - v = NULL; goto onError; } + old_v = v; v = PyBytes_FromStringAndSize(PyByteArray_AS_STRING(v), Py_SIZE(v)); + Py_DECREF(old_v); } else if (!PyBytes_Check(v)) { 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;