Use a counter instead of a Boolean to check for initialized; n calls
to Py_Initialize will be undone by n calls to Py_Uninitialize.
This commit is contained in:
parent
558be283bf
commit
aa61505fd2
|
@ -168,6 +168,7 @@ main_thread(int port)
|
|||
PyEval_AcquireThread(gtstate);
|
||||
gtstate = NULL;
|
||||
Py_Finalize();
|
||||
Py_Finalize();
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
|
@ -213,6 +214,7 @@ init_python()
|
|||
if (gtstate)
|
||||
return;
|
||||
Py_Initialize(); /* Initialize the interpreter */
|
||||
Py_Initialize(); /* Initialize the interpreter */
|
||||
PyEval_InitThreads(); /* Create (and acquire) the interpreter lock */
|
||||
gtstate = PyEval_SaveThread(); /* Release the thread state */
|
||||
}
|
||||
|
|
|
@ -98,9 +98,8 @@ Py_Initialize()
|
|||
PyObject *bimod, *sysmod;
|
||||
char *p;
|
||||
|
||||
if (initialized)
|
||||
Py_FatalError("Py_Initialize: already initialized");
|
||||
initialized = 1;
|
||||
if (++initialized > 1)
|
||||
return;
|
||||
|
||||
if ((p = getenv("PYTHONDEBUG")) && *p != '\0')
|
||||
Py_DebugFlag = 1;
|
||||
|
@ -166,9 +165,10 @@ Py_Finalize()
|
|||
|
||||
call_sys_exitfunc();
|
||||
|
||||
if (!initialized)
|
||||
if (--initialized > 0)
|
||||
return;
|
||||
if (initialized < 0)
|
||||
Py_FatalError("Py_Finalize: not initialized");
|
||||
initialized = 0;
|
||||
|
||||
tstate = PyThreadState_Get();
|
||||
interp = tstate->interp;
|
||||
|
|
Loading…
Reference in New Issue