Mercurial > hg
view rust/hg-cpython/Cargo.toml @ 43394:d359dfc15aca stable
fsmonitor: handle unicode keys in tuples
In Python 3, keys in the bset tuple are typically str, not
bytes. PyBytes_AsString() would return NULL. But we weren't
checking the return value and this would lead to a segfault.
This commit makes the code type and Python version aware. The
Python version specific code is to allow us to utilize a
modern API for converting str -> char* without having to
allocate an extra PyObject.
FWIW I wanted to assume that keys were always str. However,
there appear to be some bytes keys in some cases. I haven't
debugged this further.
Differential Revision: https://phab.mercurial-scm.org/D7210
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 02 Nov 2019 14:17:48 -0700 |
parents | 8d432d3a2d7c |
children | 25ed4d8e707f |
line wrap: on
line source
[package] name = "hg-cpython" version = "0.1.0" authors = ["Georges Racinet <gracinet@anybox.fr>"] edition = "2018" [lib] name='rusthg' crate-type = ["cdylib"] [features] default = ["python27"] # Features to build an extension module: python27 = ["cpython/python27-sys", "cpython/extension-module-2-7"] python3 = ["cpython/python3-sys", "cpython/extension-module"] # Enable one of these features to build a test executable linked to libpython: # e.g. cargo test --no-default-features --features python27-bin python27-bin = ["cpython/python27-sys"] python3-bin = ["cpython/python3-sys"] [dependencies] hg-core = { path = "../hg-core" } libc = '*' [dependencies.cpython] version = "0.3" default-features = false