You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Function getenvironment() in Modules/_winapi.c is used for converting the environment mapping to the wchar_t string for passing to CreateProcessW(). It performs the following steps:
Allocate a Py_UCS4 buffer and copy all keys and values, converting them to Py_UCS4.
Create a PyUnicode object from the Py_UCS4 buffer.
Create a wchar_t buffer from the PyUnicode object (unless it has the UCS2 kind).
The proposed PR makes it performing a single steps:
Allocate a wchar_t buffer and copy all keys and values, converting them to wchar_t.
This needs less memory allocations and smaller memory consumption. In most cases this needs also less and faster memory scans and copies.
In addition, the PR replaces PySequence_Fast C API with faster PyList C API. In the past PyMapping_Keys() and PyMapping_Values() could return a tuple in unlikely case, but now they always return a list (see bpo-28280).
The current code uses the legacy Unicode C API, while the new code uses the newer (added in 3.3) wchar_t based Unicode C API, so something similar to this change should be made sooner or later.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: