[proxy] web.archive.org← back | site home | direct (HTTPS) ↗ | proxy home | ◑ dark◐ light

python/cpython

erlend-aasland

Commits on Oct 15, 2020

  1. bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466)

    When running in a non-UTF-8 locale, if an error occurs while importing a
    native Python module (say because a dependent share library is missing),
    the error message string returned may contain non-ASCII code points
    causing a UnicodeDecodeError.
    
    PyUnicode_DecodeFSDefault is used for buffers which may contain
    filesystem  paths. For consistency with os.strerror(),
    PyUnicode_DecodeLocale is used for buffers which contain system error
    messages. While the shortname parameter is always encoded in ASCII
    according to PEP 489, it is left decoded using PyUnicode_FromString to
    minimize the changes and since it should not affect the decoding (albeit
    _potentially_ slower).
    
    In dynload_hpux, since the error buffer contains a message generated
    from a static ASCII string and the module filesystem path,
    PyUnicode_DecodeFSDefault is used instead of PyUnicode_DecodeLocale as
    is used elsewhere.
    
    * bpo-41894: Fix bugs in dynload error msg handling
    
    For both dynload_aix and dynload_hpux, properly handle the possibility
    that decoding strings may return NULL and when such an error happens,
    properly decrement any previously decoded strings and return early.
    
    In addition, in dynload_aix, ensure that we pass the decoded string
    *object* pathname_ob to PyErr_SetImportError instead of the original
    pathname buffer.
    
    Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>

Commits on Oct 13, 2020

  1. bpo-40422: Move _Py_closerange to fileutils.c (GH-22680)

    This API is relatively lightweight and organizationally, given that it's
    used by multiple modules, it makes sense to move it to fileutils.
    
    Requires making sure that _posixsubprocess is compiled with the appropriate
    Py_BUIILD_CORE_BUILTIN macro.

Commits on Oct 11, 2020

  1. bpo-40423: Optimization: use close_range(2) if available (GH-22651)

    close_range(2) should be preferred at all times if it's available, otherwise we'll use closefrom(2) if available with a fallback to fdwalk(3) or plain old loop over fd range in order of most efficient to least.
    
    [note that this version does check for ENOSYS, but currently ignores all other errors]
    
    Automerge-Triggered-By: @pablogsal
  2. bpo-40422: create a common _Py_closerange API (GH-19754)

    Such an API can be used both for os.closerange and subprocess. For the latter, this yields potential improvement for platforms that have fdwalk but wouldn't have used it there. This will prove even more beneficial later for platforms that have close_range(2), as the new API will prefer that over all else if it's available.
    
    The new API is structured to look more like close_range(2), closing from [start, end] rather than the [low, high) of os.closerange().
    
    Automerge-Triggered-By: @gpshead
  3. bpo-41993: Fix possible issues in remove_module() (GH-22631)

    * PyMapping_HasKey() is not safe because it silences all exceptions and can return incorrect result.
    * Informative exceptions from PyMapping_DelItem() are overridden with RuntimeError and
      the original exception raised before calling remove_module() is lost.
    * There is a race condition between PyMapping_HasKey() and PyMapping_DelItem().

Commits on Oct 10, 2020

  1. bpo-42000: Cleanup the AST related C-code (GH-22641)

    - Use the proper asdl sequence when creating empty arguments
    - Remove reduntant casts (thanks to new typed asdl_sequences)
    - Remove MarshalPrototypeVisitor and some utilities from asdl generator
    - Fix the header of `Python/ast.c` (kept from pgen times)
    
    Automerge-Triggered-By: @pablogsal