Skip to content

Ptr type needs to handle zero-sized types #874

Closed
@joshlf

Description

@joshlf

Progress

Details

Credit to @djkoloski for noticing this issue.

Currently, the Ptr type's internal invariants require that the pointer point to a valid allocation. However, the ptr module docs imply that zero-sized accesses do not require a pointer to a valid allocation. This is problematic for us, since it implies that Rust could generate a reference to a ZST which does not point to an allocation. Thus, our impl of From<&T> for Ptr<T> might be unsound (albeit in a way that isn't currently exercisable): it promises that, based on the fact that &T is a reference, it must refer to a valid allocation. If T is a ZST, that implication might not hold.

We should do the following:

Metadata

Metadata

Assignees

No one assigned

    Labels

    blocking-next-releaseThis issue should be resolved before we release on crates.io

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions