summaryrefslogtreecommitdiffstats
path: root/Python/pystate.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/pystate.c')
-rw-r--r--Python/pystate.c36
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