mirror of
https://github.com/python/cpython.git
synced 2025-08-22 09:45:06 +00:00
bpo-32030: Add _Py_FindEnvConfigValue() (#4963)
Add a new _Py_FindEnvConfigValue() function: code shared between Windows and Unix implementations of _PyPathConfig_Calculate() to read the pyenv.cfg file. _Py_FindEnvConfigValue() now uses _Py_DecodeUTF8_surrogateescape() instead of using a Python Unicode string, the Python API must not be used early during Python initialization. Same change in Unix search_for_exec_prefix(): use _Py_DecodeUTF8_surrogateescape(). Cleanup also encode_current_locale(): PyMem_RawFree/PyMem_Free can be called with NULL. Fix also "NUL byte" => "NULL byte" typo.
This commit is contained in:
parent
9dd762013f
commit
9bee329130
6 changed files with 80 additions and 135 deletions
|
@ -20,8 +20,6 @@ extern int winerror_to_errno(int);
|
|||
#include <fcntl.h>
|
||||
#endif /* HAVE_FCNTL_H */
|
||||
|
||||
extern wchar_t* _Py_DecodeUTF8_surrogateescape(const char *s, Py_ssize_t size,
|
||||
size_t *p_wlen);
|
||||
extern char* _Py_EncodeUTF8_surrogateescape(const wchar_t *text,
|
||||
size_t *error_pos, int raw_malloc);
|
||||
|
||||
|
@ -194,7 +192,7 @@ encode_ascii_surrogateescape(const wchar_t *text, size_t *error_pos, int raw_mal
|
|||
|
||||
len = wcslen(text);
|
||||
|
||||
/* +1 for NUL byte */
|
||||
/* +1 for NULL byte */
|
||||
if (raw_malloc) {
|
||||
result = PyMem_RawMalloc(len + 1);
|
||||
}
|
||||
|
@ -467,13 +465,11 @@ encode_current_locale(const wchar_t *text, size_t *error_pos, int raw_malloc)
|
|||
else
|
||||
converted = wcstombs(NULL, buf, 0);
|
||||
if (converted == (size_t)-1) {
|
||||
if (result != NULL) {
|
||||
if (raw_malloc) {
|
||||
PyMem_RawFree(result);
|
||||
}
|
||||
else {
|
||||
PyMem_Free(result);
|
||||
}
|
||||
if (raw_malloc) {
|
||||
PyMem_RawFree(result);
|
||||
}
|
||||
else {
|
||||
PyMem_Free(result);
|
||||
}
|
||||
if (error_pos != NULL)
|
||||
*error_pos = i;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue