bpo-34170: _PyCoreConfig_Read() leaves Py_IsolatedFlag unchanged (GH-8361)

* _PyCoreConfig_Read() no longer directly modifies Py_IsolatedFlag
  and Py_NoSiteFlag global configuration flags. The function now
  requires two pointers to integer, so these flags can be set later,
  to avoid side effets in _PyCoreConfig_Read().
* pathconfig_global_init() now leaves Py_IsolatedFlag and
  Py_NoSiteFlag unchanged.
* Fix pathconfig_global_init(): avoid computing the path
  configuration twice, use _PyCoreConfig_SetPathConfig().
diff --git a/Python/pathconfig.c b/Python/pathconfig.c
index e987df1..1f6177f 100644
--- a/Python/pathconfig.c
+++ b/Python/pathconfig.c
@@ -283,7 +283,8 @@
 
 
 _PyInitError
-_PyCoreConfig_InitPathConfig(_PyCoreConfig *config)
+_PyCoreConfig_InitPathConfig(_PyCoreConfig *config,
+                             int *isolated, int *no_site_import)
 {
     _PyPathConfig path_config = _PyPathConfig_INIT;
     _PyInitError err;
@@ -344,6 +345,13 @@
         }
     }
 
+    if (path_config.isolated != -1 && isolated != NULL) {
+        *isolated = path_config.isolated;
+    }
+    if (path_config.no_site_import != -1 && no_site_import != NULL) {
+        *no_site_import = path_config.no_site_import;
+    }
+
     _PyPathConfig_Clear(&path_config);
     return _Py_INIT_OK();
 
@@ -365,30 +373,25 @@
     }
 
     _PyInitError err;
-    _PyPathConfig path_config = _PyPathConfig_INIT;
     _PyCoreConfig config = _PyCoreConfig_INIT;
 
-    err = _PyCoreConfig_Read(&config);
+    /* Py_IsolatedFlag and Py_NoSiteFlag are left unchanged: pass NULL.
+       _PyCoreConfig_InitPathConfig() will be called later and will set
+       these flags. */
+    err = _PyCoreConfig_Read(&config, NULL, NULL);
     if (_Py_INIT_FAILED(err)) {
         goto error;
     }
 
-    err = _PyPathConfig_Calculate(&path_config, &config);
+    err = _PyCoreConfig_SetPathConfig(&config);
     if (_Py_INIT_FAILED(err)) {
         goto error;
     }
 
-    err = _PyPathConfig_SetGlobal(&path_config);
-    if (_Py_INIT_FAILED(err)) {
-        goto error;
-    }
-
-    _PyPathConfig_Clear(&path_config);
     _PyCoreConfig_Clear(&config);
     return;
 
 error:
-    _PyPathConfig_Clear(&path_config);
     _PyCoreConfig_Clear(&config);
     _Py_FatalInitError(err);
 }