bpo-39465: Cleanup _PyUnicode_FromId() code (GH-20595)

Work on a local variable before filling _Py_Identifier members.
This commit is contained in:
Victor Stinner 2020-06-02 14:39:45 +02:00 committed by GitHub
parent 59d3dce69b
commit 297257f7bc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2275,17 +2275,23 @@ PyUnicode_FromString(const char *u)
PyObject *
_PyUnicode_FromId(_Py_Identifier *id)
{
if (!id->object) {
id->object = PyUnicode_DecodeUTF8Stateful(id->string,
strlen(id->string),
NULL, NULL);
if (!id->object)
return NULL;
PyUnicode_InternInPlace(&id->object);
assert(!id->next);
id->next = static_strings;
static_strings = id;
if (id->object) {
return id->object;
}
PyObject *obj;
obj = PyUnicode_DecodeUTF8Stateful(id->string,
strlen(id->string),
NULL, NULL);
if (!obj) {
return NULL;
}
PyUnicode_InternInPlace(&obj);
assert(!id->next);
id->object = obj;
id->next = static_strings;
static_strings = id;
return id->object;
}