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.
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 4d64114..9f977f0 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -98,9 +98,8 @@
 	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 @@
 
 	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;