bpo-31650: Remove _Py_CheckHashBasedPycsMode global config var (GH-8608)

bpo-31650, bpo-34170: Replace _Py_CheckHashBasedPycsMode with
_PyCoreConfig._check_hash_pycs_mode. Modify PyInit__imp() and
zipimport to get the parameter from the current interpreter core
configuration.

Remove Include/internal/import.h file.
This commit is contained in:
Victor Stinner 2018-08-01 18:18:07 +02:00 committed by GitHub
parent 6c785c0ebd
commit 80b762f010
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 7 additions and 24 deletions

View file

@ -1,5 +1,4 @@
#include "Python.h"
#include "internal/import.h"
#include "internal/pystate.h"
@ -52,7 +51,6 @@ int Py_IsolatedFlag = 0; /* for -I, isolate from user's env */
int Py_LegacyWindowsFSEncodingFlag = 0; /* Uses mbcs instead of utf-8 */
int Py_LegacyWindowsStdioFlag = 0; /* Uses FileIO instead of WindowsConsoleIO */
#endif
const char *_Py_CheckHashBasedPycsMode = "default";
void
@ -317,10 +315,6 @@ _PyCoreConfig_GetGlobalConfig(_PyCoreConfig *config)
COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
if (config->_check_hash_pycs_mode == NULL) {
config->_check_hash_pycs_mode = _Py_CheckHashBasedPycsMode;
}
#undef COPY_FLAG
#undef COPY_NOT_FLAG
}
@ -359,10 +353,6 @@ _PyCoreConfig_SetGlobalConfig(const _PyCoreConfig *config)
COPY_NOT_FLAG(write_bytecode, Py_DontWriteBytecodeFlag);
COPY_NOT_FLAG(user_site_directory, Py_NoUserSiteDirectory);
if (config->_check_hash_pycs_mode != NULL) {
_Py_CheckHashBasedPycsMode = config->_check_hash_pycs_mode;
}
/* Random or non-zero hash seed */
Py_HashRandomizationFlag = (config->use_hash_seed == 0 ||
config->hash_seed != 0);

View file

@ -5,7 +5,6 @@
#include "Python-ast.h"
#undef Yield /* undefine macro conflicting with winbase.h */
#include "internal/hash.h"
#include "internal/import.h"
#include "internal/pystate.h"
#include "errcode.h"
#include "marshal.h"
@ -2290,7 +2289,8 @@ PyInit__imp(void)
d = PyModule_GetDict(m);
if (d == NULL)
goto failure;
PyObject *pyc_mode = PyUnicode_FromString(_Py_CheckHashBasedPycsMode);
_PyCoreConfig *config = &PyThreadState_GET()->interp->core_config;
PyObject *pyc_mode = PyUnicode_FromString(config->_check_hash_pycs_mode);
if (pyc_mode == NULL) {
goto failure;
}