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/Demo/pysvr/pysvr.c b/Demo/pysvr/pysvr.c
index c651648..b1397c9 100644
--- a/Demo/pysvr/pysvr.c
+++ b/Demo/pysvr/pysvr.c
@@ -168,6 +168,7 @@
 		PyEval_AcquireThread(gtstate);
 		gtstate = NULL;
 		Py_Finalize();
+		Py_Finalize();
 	}
 	exit(0);
 }
@@ -213,6 +214,7 @@
 	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 */
 }