Kaydet (Commit) aa61505f authored tarafından Guido van Rossum's avatar Guido van Rossum

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.
üst 558be283
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment