Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Map size_t to usize by default and check compatibility (fixes #1901, #1903) #2062

Closed
wants to merge 1 commit into from

Commits on Jun 3, 2021

  1. Map size_t to usize by default and check compatibility (fixes rust-la…

    …ng#1901, rust-lang#1903)
    
    This addresses the underlying issue identified in rust-lang#1671, that size_t
    (integer that can hold any object size) isn't guaranteed to match usize,
    which is defined more like uintptr_t (integer that can hold any
    pointer). However, on almost all platforms, this is true, and in fact
    Rust already uses usize extensively in contexts where size_t would be
    more appropriate, such as slice indexing. So, it's better for ergonomics
    when interfacing with C code to map the C size_t type to usize. (See
    also discussion in rust-lang/rust#65473 about how usize really should be
    defined as size_t, not uintptr_t.)
    
    The previous fix for rust-lang#1671 removed the special case for size_t and
    defaulted to binding it as a normal typedef.  This change effectively
    reverts that and goes back to mapping size_t to usize (and ssize_t to
    isize), but also ensures that if size_t is emitted, the typedef'd type
    of size_t in fact is compatible with usize (defined by checking that the
    size and alignment match the target pointer width). For (hypothetical)
    platforms where this is not true, or for compatibility with the default
    behavior of bindgen between 0.53 and this commit, onwards, you can
    disable this mapping with --no-size_t-is-usize.
    geofft committed Jun 3, 2021
    Configuration menu
    Copy the full SHA
    6390196 View commit details
    Browse the repository at this point in the history