Skip to content

Test that derived code works with std::mem::transmute #35

@turalcar

Description

@turalcar

The main offender is download_more_ram() that converts 0 to a pointer.

let sentinel_slice = crate::transmute::<_, &[u8]>([0usize, 1usize]);

With std::mem::transmute this causes time-travelling UB: compiler concludes that the only way we could get 0 here is by failing unwrap() few lines prior. The simple solution would be to use 1usize and 2usize to deduce the slice pointer layout or just assume that the pointer goes first - it's not the end of the world.
This prevents removing #[inline(never)] in the implementation of transmute().

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions