@@ -45,27 +45,40 @@ static const char header[] =
4545static void
4646runtime_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