From a7548230ff6db5008c76e97f2597ebfdb41da19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20Gr=C3=B6nholm?= Date: Thu, 9 Aug 2018 23:49:49 +0300 Subject: [PATCH] Fixed inconsistency in string handling in the Task C implementation (GH-8717) --- Modules/_asynciomodule.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 3c94848e331..3d7ce01a680 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; }