]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Use PyInitConfig API in _freeze_module.c (#137423)
authorVictor Stinner <vstinner@python.org>
Wed, 6 Aug 2025 12:34:56 +0000 (14:34 +0200)
committerGitHub <noreply@github.com>
Wed, 6 Aug 2025 12:34:56 +0000 (14:34 +0200)
Programs/_freeze_module.c

index 06d1ee016dc2a80cd032e3140148fe07b5138925..a5809b37b6b493fa282883db5642fea34121293d 100644 (file)
@@ -45,27 +45,40 @@ static const char header[] =
 static void
 runtime_init(void)
 {
-    PyConfig config;
-    PyConfig_InitIsolatedConfig(&config);
-
-    config.site_import = 0;
+    PyInitConfig *config = PyInitConfig_Create();
+    if (config == NULL) {
+        printf("memory allocation failed\n");
+        exit(1);
+    }
 
-    PyStatus status;
-    status = PyConfig_SetString(&config, &config.program_name,
-                                L"./_freeze_module");
-    if (PyStatus_Exception(status)) {
-        PyConfig_Clear(&config);
-        Py_ExitStatusException(status);
+    if (PyInitConfig_SetInt(config, "site_import", 0) < 0) {
+        goto error;
+    }
+    if (PyInitConfig_SetStr(config, "program_name", "./_freeze_module") < 0) {
+        goto error;
     }
 
     /* Don't install importlib, since it could execute outdated bytecode. */
-    config._install_importlib = 0;
-    config._init_main = 0;
+    if (PyInitConfig_SetInt(config, "_install_importlib", 0) < 0) {
+        goto error;
+    }
+    if (PyInitConfig_SetInt(config, "_init_main", 0) < 0) {
+        goto error;
+    }
+
+    if (Py_InitializeFromInitConfig(config) < 0) {
+        goto error;
+    }
+    PyInitConfig_Free(config);
+    return;
 
-    status = Py_InitializeFromConfig(&config);
-    PyConfig_Clear(&config);
-    if (PyStatus_Exception(status)) {
-        Py_ExitStatusException(status);
+error:
+    {
+        const char *err_msg;
+        (void)PyInitConfig_GetError(config, &err_msg);
+        printf("Python init error: %s\n", err_msg);
+        PyInitConfig_Free(config);
+        exit(1);
     }
 }