diff options
Diffstat (limited to 'Python/pystate.c')
| -rw-r--r-- | Python/pystate.c | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/Python/pystate.c b/Python/pystate.c index ba4dd4c..6d1c6d0 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -25,7 +25,7 @@ to avoid the expense of doing their own locking). #ifdef HAVE_DLFCN_H #include <dlfcn.h> #endif -#if !HAVE_DECL_RTLD_LAZY +#ifndef RTLD_LAZY #define RTLD_LAZY 1 #endif #endif @@ -34,8 +34,6 @@ to avoid the expense of doing their own locking). extern "C" { #endif -int _PyGILState_check_enabled = 1; - #ifdef WITH_THREAD #include "pythread.h" static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */ @@ -47,7 +45,7 @@ static PyThread_type_lock head_mutex = NULL; /* Protects interp->tstate_head */ GILState implementation */ static PyInterpreterState *autoInterpreterState = NULL; -static int autoTLSkey = -1; +static int autoTLSkey = 0; #else #define HEAD_INIT() /* Nothing */ #define HEAD_LOCK() /* Nothing */ @@ -91,7 +89,7 @@ PyInterpreterState_New(void) interp->fscodec_initialized = 0; interp->importlib = NULL; #ifdef HAVE_DLOPEN -#if HAVE_DECL_RTLD_NOW +#ifdef RTLD_NOW interp->dlopenflags = RTLD_NOW; #else interp->dlopenflags = RTLD_LAZY; @@ -451,10 +449,10 @@ PyThreadState_DeleteCurrent() if (tstate == NULL) Py_FatalError( "PyThreadState_DeleteCurrent: no current tstate"); - tstate_delete_common(tstate); + SET_TSTATE(NULL); if (autoInterpreterState && PyThread_get_key_value(autoTLSkey) == tstate) PyThread_delete_key_value(autoTLSkey); - SET_TSTATE(NULL); + tstate_delete_common(tstate); PyEval_ReleaseLock(); } #endif /* WITH_THREAD */ @@ -698,7 +696,7 @@ PyThreadState_IsCurrent(PyThreadState *tstate) } /* Internal initialization/finalization functions called by - Py_Initialize/Py_FinalizeEx + Py_Initialize/Py_Finalize */ void _PyGILState_Init(PyInterpreterState *i, PyThreadState *t) @@ -714,17 +712,10 @@ _PyGILState_Init(PyInterpreterState *i, PyThreadState *t) _PyGILState_NoteThreadState(t); } -PyInterpreterState * -_PyGILState_GetInterpreterStateUnsafe(void) -{ - return autoInterpreterState; -} - void _PyGILState_Fini(void) { PyThread_delete_key(autoTLSkey); - autoTLSkey = -1; autoInterpreterState = NULL; } @@ -793,19 +784,8 @@ PyGILState_GetThisThreadState(void) int PyGILState_Check(void) { - PyThreadState *tstate; - - if (!_PyGILState_check_enabled) - return 1; - - if (autoTLSkey == -1) - return 1; - - tstate = GET_TSTATE(); - if (tstate == NULL) - return 0; - - return (tstate == PyGILState_GetThisThreadState()); + PyThreadState *tstate = GET_TSTATE(); + return tstate && (tstate == PyGILState_GetThisThreadState()); } PyGILState_STATE |
