mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	bpo-38304: Add PyConfig.struct_size (GH-16451)
Add a new struct_size field to PyPreConfig and PyConfig structures to allow to modify these structures in the future without breaking the backward compatibility. * Replace private _config_version field with public struct_size field in PyPreConfig and PyConfig. * Public PyPreConfig_InitIsolatedConfig() and PyPreConfig_InitPythonConfig() return type becomes PyStatus, instead of void. * Internal _PyConfig_InitCompatConfig(), _PyPreConfig_InitCompatConfig(), _PyPreConfig_InitFromConfig(), _PyPreConfig_InitFromPreConfig() return type becomes PyStatus, instead of void. * Remove _Py_CONFIG_VERSION * Update the Initialization Configuration documentation.
This commit is contained in:
		
							parent
							
								
									52d1b86bde
								
							
						
					
					
						commit
						441b10cf28
					
				
					 13 changed files with 350 additions and 60 deletions
				
			
		|  | @ -735,7 +735,12 @@ _Py_PreInitializeFromPyArgv(const PyPreConfig *src_config, const _PyArgv *args) | |||
|     runtime->preinitializing = 1; | ||||
| 
 | ||||
|     PyPreConfig config; | ||||
|     _PyPreConfig_InitFromPreConfig(&config, src_config); | ||||
|     config.struct_size = sizeof(PyPreConfig); | ||||
| 
 | ||||
|     status = _PyPreConfig_InitFromPreConfig(&config, src_config); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|         return status; | ||||
|     } | ||||
| 
 | ||||
|     status = _PyPreConfig_Read(&config, args); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|  | @ -794,7 +799,12 @@ _Py_PreInitializeFromConfig(const PyConfig *config, | |||
|     } | ||||
| 
 | ||||
|     PyPreConfig preconfig; | ||||
|     _PyPreConfig_InitFromConfig(&preconfig, config); | ||||
|     preconfig.struct_size = sizeof(PyPreConfig); | ||||
| 
 | ||||
|     status = _PyPreConfig_InitFromConfig(&preconfig, config); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|         return status; | ||||
|     } | ||||
| 
 | ||||
|     if (!config->parse_argv) { | ||||
|         return Py_PreInitialize(&preconfig); | ||||
|  | @ -842,7 +852,12 @@ pyinit_core(_PyRuntimeState *runtime, | |||
|     } | ||||
| 
 | ||||
|     PyConfig config; | ||||
|     _PyConfig_InitCompatConfig(&config); | ||||
|     config.struct_size = sizeof(PyConfig); | ||||
| 
 | ||||
|     status = _PyConfig_InitCompatConfig(&config); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|         goto done; | ||||
|     } | ||||
| 
 | ||||
|     status = _PyConfig_Copy(&config, src_config); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|  | @ -1064,7 +1079,13 @@ Py_InitializeEx(int install_sigs) | |||
|     } | ||||
| 
 | ||||
|     PyConfig config; | ||||
|     _PyConfig_InitCompatConfig(&config); | ||||
|     config.struct_size = sizeof(PyConfig); | ||||
| 
 | ||||
|     status = _PyConfig_InitCompatConfig(&config); | ||||
|     if (_PyStatus_EXCEPTION(status)) { | ||||
|         Py_ExitStatusException(status); | ||||
|     } | ||||
| 
 | ||||
|     config.install_signal_handlers = install_sigs; | ||||
| 
 | ||||
|     status = Py_InitializeFromConfig(&config); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Victor Stinner
						Victor Stinner