}
Py_ffi_closure_free(ptr);
+ _ctypes_init_fielddesc();
+
ctypes_state *st = get_module_state(mod);
st->_unpickle = PyObject_GetAttrString(mod, "_unpickle");
if (st->_unpickle == NULL) {
/* Delayed initialization. Windows cannot statically reference dynamically
loaded addresses from DLLs. */
-static void
-_ctypes_init_fielddesc_locked(void)
+void
+_ctypes_init_fielddesc(void)
{
/* Fixed-width integers */
#undef FIXINT_FIELDDESC_FOR
_Py_COMP_DIAG_POP
-static void
-_ctypes_init_fielddesc(void)
-{
- static bool initialized = false;
- static PyMutex mutex = {0};
- PyMutex_Lock(&mutex);
- if (!initialized) {
- _ctypes_init_fielddesc_locked();
- initialized = true;
- }
- PyMutex_Unlock(&mutex);
-}
-
char *
_ctypes_get_simple_type_chars(void) {
- _ctypes_init_fielddesc();
return formattable.simple_type_chars;
}
struct fielddesc *
_ctypes_get_fielddesc(const char *fmt)
{
- _ctypes_init_fielddesc();
-
struct fielddesc *result = NULL;
switch(fmt[0]) {
/*[python input]
PyObject *_ctypes_get_errobj(ctypes_state *st, int **pspace);
+extern void _ctypes_init_fielddesc(void);
+
#ifdef USING_MALLOC_CLOSURE_DOT_C
void Py_ffi_closure_free(void *p);
void *Py_ffi_closure_alloc(size_t size, void** codeloc);