summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2019-05-02 03:51:56 (GMT)
committerGitHub <noreply@github.com>2019-05-02 03:51:56 (GMT)
commitcb9fbd35885a8921b9df99e801df4f82e3ba336b (patch)
treeac897ce5cd21edf057576367de97bd4c6ed0c85d /Python
parent11e4a941e9c6225776a986b05230a1963e83f4fb (diff)
downloadcpython-cb9fbd35885a8921b9df99e801df4f82e3ba336b.zip
cpython-cb9fbd35885a8921b9df99e801df4f82e3ba336b.tar.gz
cpython-cb9fbd35885a8921b9df99e801df4f82e3ba336b.tar.bz2
bpo-36763: Make _PyCoreConfig.check_hash_pycs_mode public (GH-13052)
_PyCoreConfig: Rename _check_hash_pycs_mode field to check_hash_pycs_mode (make it public) and change its type from "const char*" to "wchar_t*".
Diffstat (limited to 'Python')
-rw-r--r--Python/coreconfig.c30
-rw-r--r--Python/import.c2
2 files changed, 22 insertions, 10 deletions
diff --git a/Python/coreconfig.c b/Python/coreconfig.c
index 7f388cb..1cb4b52 100644
--- a/Python/coreconfig.c
+++ b/Python/coreconfig.c
@@ -516,6 +516,7 @@ _PyCoreConfig_Clear(_PyCoreConfig *config)
CLEAR(config->run_command);
CLEAR(config->run_module);
CLEAR(config->run_filename);
+ CLEAR(config->check_hash_pycs_mode);
#undef CLEAR
}
@@ -686,7 +687,7 @@ _PyCoreConfig_Copy(_PyCoreConfig *config, const _PyCoreConfig *config2)
COPY_WSTR_ATTR(run_command);
COPY_WSTR_ATTR(run_module);
COPY_WSTR_ATTR(run_filename);
- COPY_ATTR(_check_hash_pycs_mode);
+ COPY_WSTR_ATTR(check_hash_pycs_mode);
COPY_ATTR(_frozen);
COPY_ATTR(_init_main);
@@ -792,7 +793,7 @@ _PyCoreConfig_AsDict(const _PyCoreConfig *config)
SET_ITEM_WSTR(run_module);
SET_ITEM_WSTR(run_filename);
SET_ITEM_INT(_install_importlib);
- SET_ITEM_STR(_check_hash_pycs_mode);
+ SET_ITEM_WSTR(check_hash_pycs_mode);
SET_ITEM_INT(_frozen);
SET_ITEM_INT(_init_main);
@@ -1711,6 +1712,7 @@ static _PyInitError
config_parse_cmdline(_PyCoreConfig *config, _PyPreCmdline *precmdline,
_PyWstrList *warnoptions)
{
+ _PyInitError err;
const _PyWstrList *argv = &precmdline->argv;
int print_version = 0;
@@ -1757,12 +1759,15 @@ config_parse_cmdline(_PyCoreConfig *config, _PyPreCmdline *precmdline,
case 0:
// Handle long option.
assert(longindex == 0); // Only one long option now.
- if (!wcscmp(_PyOS_optarg, L"always")) {
- config->_check_hash_pycs_mode = "always";
- } else if (!wcscmp(_PyOS_optarg, L"never")) {
- config->_check_hash_pycs_mode = "never";
- } else if (!wcscmp(_PyOS_optarg, L"default")) {
- config->_check_hash_pycs_mode = "default";
+ if (wcscmp(_PyOS_optarg, L"always") == 0
+ || wcscmp(_PyOS_optarg, L"never") == 0
+ || wcscmp(_PyOS_optarg, L"default") == 0)
+ {
+ err = _PyCoreConfig_SetWideString(&config->check_hash_pycs_mode,
+ _PyOS_optarg);
+ if (_Py_INIT_FAILED(err)) {
+ return err;
+ }
} else {
fprintf(stderr, "--check-hash-based-pycs must be one of "
"'default', 'always', or 'never'\n");
@@ -2131,6 +2136,13 @@ config_read_cmdline(_PyCoreConfig *config, _PyPreCmdline *precmdline)
goto done;
}
+ if (config->check_hash_pycs_mode == NULL) {
+ err = _PyCoreConfig_SetWideString(&config->check_hash_pycs_mode, L"default");
+ if (_Py_INIT_FAILED(err)) {
+ goto done;
+ }
+ }
+
err = _Py_INIT_OK();
done:
@@ -2254,7 +2266,7 @@ _PyCoreConfig_Read(_PyCoreConfig *config)
#ifdef MS_WINDOWS
assert(config->legacy_windows_stdio >= 0);
#endif
- assert(config->_check_hash_pycs_mode != NULL);
+ assert(config->check_hash_pycs_mode != NULL);
assert(config->_install_importlib >= 0);
assert(config->_frozen >= 0);
diff --git a/Python/import.c b/Python/import.c
index 3b2090b..b03bc98 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2305,7 +2305,7 @@ PyInit__imp(void)
if (d == NULL)
goto failure;
_PyCoreConfig *config = &_PyInterpreterState_Get()->core_config;
- PyObject *pyc_mode = PyUnicode_FromString(config->_check_hash_pycs_mode);
+ PyObject *pyc_mode = PyUnicode_FromWideChar(config->check_hash_pycs_mode, -1);
if (pyc_mode == NULL) {
goto failure;
}