From: Alex Grönholm Date: Thu, 9 Aug 2018 20:49:49 +0000 (+0300) Subject: Fixed inconsistency in string handling in the Task C implementation (GH-8717) X-Git-Tag: v3.8.0a1~1225 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a7548230ff6db5008c76e97f2597ebfdb41da19d;p=thirdparty%2FPython%2Fcpython.git Fixed inconsistency in string handling in the Task C implementation (GH-8717) --- diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 3c94848e3318..3d7ce01a680c 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -1976,7 +1976,7 @@ _asyncio_Task___init___impl(TaskObj *self, PyObject *coro, PyObject *loop, if (name == Py_None) { name = PyUnicode_FromFormat("Task-%" PRIu64, ++task_name_counter); - } else if (!PyUnicode_Check(name)) { + } else if (!PyUnicode_CheckExact(name)) { name = PyObject_Str(name); } else { Py_INCREF(name); @@ -2343,12 +2343,16 @@ static PyObject * _asyncio_Task_set_name(TaskObj *self, PyObject *value) /*[clinic end generated code: output=138a8d51e32057d6 input=a8359b6e65f8fd31]*/ { - PyObject *name = PyObject_Str(value); - if (name == NULL) { - return NULL; + if (!PyUnicode_CheckExact(value)) { + value = PyObject_Str(value); + if (value == NULL) { + return NULL; + } + } else { + Py_INCREF(value); } - Py_XSETREF(self->task_name, name); + Py_XSETREF(self->task_name, value); Py_RETURN_NONE; }