Skip to content

Commit c17f378

Browse files
authored
Use PyInitConfig API in _freeze_module.c (#137423)
1 parent 3a79a12 commit c17f378

File tree

1 file changed

+29
-16
lines changed

1 file changed

+29
-16
lines changed

Programs/_freeze_module.c

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,27 +45,40 @@ static const char header[] =
4545
static void
4646
runtime_init(void)
4747
{
48-
PyConfig config;
49-
PyConfig_InitIsolatedConfig(&config);
50-
51-
config.site_import = 0;
48+
PyInitConfig *config = PyInitConfig_Create();
49+
if (config == NULL) {
50+
printf("memory allocation failed\n");
51+
exit(1);
52+
}
5253

53-
PyStatus status;
54-
status = PyConfig_SetString(&config, &config.program_name,
55-
L"./_freeze_module");
56-
if (PyStatus_Exception(status)) {
57-
PyConfig_Clear(&config);
58-
Py_ExitStatusException(status);
54+
if (PyInitConfig_SetInt(config, "site_import", 0) < 0) {
55+
goto error;
56+
}
57+
if (PyInitConfig_SetStr(config, "program_name", "./_freeze_module") < 0) {
58+
goto error;
5959
}
6060

6161
/* Don't install importlib, since it could execute outdated bytecode. */
62-
config._install_importlib = 0;
63-
config._init_main = 0;
62+
if (PyInitConfig_SetInt(config, "_install_importlib", 0) < 0) {
63+
goto error;
64+
}
65+
if (PyInitConfig_SetInt(config, "_init_main", 0) < 0) {
66+
goto error;
67+
}
68+
69+
if (Py_InitializeFromInitConfig(config) < 0) {
70+
goto error;
71+
}
72+
PyInitConfig_Free(config);
73+
return;
6474

65-
status = Py_InitializeFromConfig(&config);
66-
PyConfig_Clear(&config);
67-
if (PyStatus_Exception(status)) {
68-
Py_ExitStatusException(status);
75+
error:
76+
{
77+
const char *err_msg;
78+
(void)PyInitConfig_GetError(config, &err_msg);
79+
printf("Python init error: %s\n", err_msg);
80+
PyInitConfig_Free(config);
81+
exit(1);
6982
}
7083
}
7184

0 commit comments

Comments
 (0)