diff options
Diffstat (limited to 'Python')
| -rw-r--r-- | Python/import.c | 25 | ||||
| -rw-r--r-- | Python/pystate.c | 6 | 
2 files changed, 21 insertions, 10 deletions
diff --git a/Python/import.c b/Python/import.c index 2adcb04674..1dbe544e73 100644 --- a/Python/import.c +++ b/Python/import.c @@ -252,16 +252,6 @@ _PyImportHooks_Init(void)      Py_DECREF(path_hooks);  } -void -_PyImport_Fini(void) -{ -    Py_XDECREF(extensions); -    extensions = NULL; -    PyMem_DEL(_PyImport_Filetab); -    _PyImport_Filetab = NULL; -} - -  /* Locking primitives to prevent parallel imports of the same module     in different threads to return with a partially loaded module.     These calls are serialized by the global interpreter lock. */ @@ -374,6 +364,21 @@ imp_release_lock(PyObject *self, PyObject *noargs)      return Py_None;  } +void +_PyImport_Fini(void) +{ +    Py_XDECREF(extensions); +    extensions = NULL; +    PyMem_DEL(_PyImport_Filetab); +    _PyImport_Filetab = NULL; +#ifdef WITH_THREAD +    if (import_lock != NULL) { +        PyThread_free_lock(import_lock); +        import_lock = NULL; +    } +#endif +} +  static void  imp_modules_reloading_clear(void)  { diff --git a/Python/pystate.c b/Python/pystate.c index b347c41c54..40699af499 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -150,6 +150,12 @@ PyInterpreterState_Delete(PyInterpreterState *interp)      *p = interp->next;      HEAD_UNLOCK();      free(interp); +#ifdef WITH_THREAD +    if (interp_head == NULL && head_mutex != NULL) { +        PyThread_free_lock(head_mutex); +        head_mutex = NULL; +    } +#endif  }  | 
