https://github.com/python/cpython/commit/28e476f6a2e4c7621f6724c2c3f5764a30623311 commit: 28e476f6a2e4c7621f6724c2c3f5764a30623311 branch: main author: Kumar Aditya <kumaradi...@python.org> committer: kumaraditya303 <kumaradi...@python.org> date: 2025-03-30T10:50:35Z summary:
gh-127945: make initialization of `error_object_name` thread safe in ctypes (#131896) files: M Modules/_ctypes/_ctypes.c M Modules/_ctypes/callproc.c diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 803d41630dd59a..7536d3fdc2b882 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -6093,14 +6093,19 @@ _ctypes_mod_exec(PyObject *mod) } #ifdef WORDS_BIGENDIAN - st->swapped_suffix = PyUnicode_InternFromString("_le"); + st->swapped_suffix = PyUnicode_InternFromString("_le"); #else - st->swapped_suffix = PyUnicode_InternFromString("_be"); + st->swapped_suffix = PyUnicode_InternFromString("_be"); #endif if (st->swapped_suffix == NULL) { return -1; } + st->error_object_name = PyUnicode_InternFromString("ctypes.error_object"); + if (st->error_object_name == NULL) { + return -1; + } + if (_ctypes_add_types(mod) < 0) { return -1; } diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index 80b66afb3625d1..158422fb9b0471 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -164,12 +164,7 @@ _ctypes_get_errobj(ctypes_state *st, int **pspace) "cannot get thread state"); return NULL; } - if (st->error_object_name == NULL) { - st->error_object_name = PyUnicode_InternFromString("ctypes.error_object"); - if (st->error_object_name == NULL) { - return NULL; - } - } + assert(st->error_object_name != NULL); if (PyDict_GetItemRef(dict, st->error_object_name, &errobj) < 0) { return NULL; } _______________________________________________ Python-checkins mailing list -- python-checkins@python.org To unsubscribe send an email to python-checkins-le...@python.org https://mail.python.org/mailman3/lists/python-checkins.python.org/ Member address: arch...@mail-archive.com