@@ -45,27 +45,40 @@ static const char header[] =
45
45
static void
46
46
runtime_init (void )
47
47
{
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
+ }
52
53
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 ;
59
59
}
60
60
61
61
/* 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 ;
64
74
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 );
69
82
}
70
83
}
71
84
0 commit comments