bpo-33932: Calling Py_Initialize() twice does nothing (GH-7845)


Calling Py_Initialize() twice does nothing, instead of failing with a
fatal error: restore the Python 3.6 behaviour.
(cherry picked from commit 209abf746985526bce255e2fba97d3246924885d)

Co-authored-by: Victor Stinner <vstinner@redhat.com>
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
index 7406470..b8827f0 100644
--- a/Programs/_testembed.c
+++ b/Programs/_testembed.c
@@ -263,6 +263,19 @@
     return 0;
 }
 
+static int test_initialize_twice(void)
+{
+    _testembed_Py_Initialize();
+
+    /* bpo-33932: Calling Py_Initialize() twice should do nothing
+     * (and not crash!). */
+    Py_Initialize();
+
+    Py_Finalize();
+
+    return 0;
+}
+
 
 /* *********************************************************
  * List of test cases and the function that implements it.
@@ -288,6 +301,7 @@
     { "pre_initialization_api", test_pre_initialization_api },
     { "pre_initialization_sys_options", test_pre_initialization_sys_options },
     { "bpo20891", test_bpo20891 },
+    { "initialize_twice", test_initialize_twice },
     { NULL, NULL }
 };