Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Several type aliases with statically sized names (e.g. `npy_uint64`) were being aliased to platform-dependent types like `::std::os::raw::c_long`. Most of these were barely used, so it seems like they didn't cause problems before, but now with `npy_uint64` being used in certain structs, which are the target of pointer punning, the mismatch in sizes became visible. For example, `npy_uint64` was previously typedef'd to `c_ulong`, which is 64 bits on 64-bit platforms and on all Unix-likes, but 32 bits on Windows 32-bit. This caused inaccurate reads through pointers to structs containing them, eventually resulting in attempts to derefence null pointers.
- Loading branch information