mirror of https://github.com/python/cpython
GH-100227: cleanup initialization of global interned dict (#102682)
This commit is contained in:
parent
7bdb331b67
commit
3d872a74c8
|
@ -14533,6 +14533,15 @@ _PyUnicode_InitGlobalObjects(PyInterpreterState *interp)
|
|||
return _PyStatus_OK();
|
||||
}
|
||||
|
||||
// Initialize the global interned dict
|
||||
PyObject *interned = PyDict_New();
|
||||
if (interned == NULL) {
|
||||
PyErr_Clear();
|
||||
return _PyStatus_ERR("failed to create interned dict");
|
||||
}
|
||||
|
||||
set_interned_dict(interned);
|
||||
|
||||
/* Intern statically allocated string identifiers and deepfreeze strings.
|
||||
* This must be done before any module initialization so that statically
|
||||
* allocated string identifiers are used instead of heap allocated strings.
|
||||
|
@ -14600,14 +14609,7 @@ PyUnicode_InternInPlace(PyObject **p)
|
|||
}
|
||||
|
||||
PyObject *interned = get_interned_dict();
|
||||
if (interned == NULL) {
|
||||
interned = PyDict_New();
|
||||
if (interned == NULL) {
|
||||
PyErr_Clear(); /* Don't leave an exception */
|
||||
return;
|
||||
}
|
||||
set_interned_dict(interned);
|
||||
}
|
||||
assert(interned != NULL);
|
||||
|
||||
PyObject *t = PyDict_SetDefault(interned, s, s);
|
||||
if (t == NULL) {
|
||||
|
|
Loading…
Reference in New Issue