From: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Date: Tue, 14 Mar 2023 08:52:21 +0000 (+0530) Subject: GH-100227: cleanup initialization of global interned dict (#102682) X-Git-Tag: v3.12.0a7~182 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3d872a74c8c16d4a077c2223f678b1f8f7e0e988;p=thirdparty%2FPython%2Fcpython.git GH-100227: cleanup initialization of global interned dict (#102682) --- diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 2d50f9c340f2..b9fb53147b9b 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -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) {