Nilstrieb
51b4d2a1e8
In uninit checking, add fallback for polymorphic types
2023-03-29 19:46:44 +02:00
Nilstrieb
84b6049eb9
Use uninit checking from rustc
...
rustc has proper heuristics for actually checking whether a type allows
being left uninitialized (by asking CTFE). We can now use this for our
helper instead of rolling our own bad version with false positives.
2023-03-21 18:28:06 +01:00
Alessandro Decina
49319b4206
uninit_vec: special case set_len(0)
...
set_len(0) does not create uninitialized elements. Fixes a false positive with
the following pattern:
fn copy_slice_into_vec(dst: &mut Vec<u8>, src: &[u8]) {
dst.reserve(src.len().saturating_sub(dst.len()));
unsafe {
dst.set_len(0);
std::ptr::copy_nonoverlapping(src.as_ptr(), dst.as_mut_ptr(), src.len());
dst.set_len(src.len());
}
}
2022-09-23 09:35:47 +01:00
Yechan Bae
de0d2b1500
Add testcases
2021-10-09 05:47:07 -04:00
Yechan Bae
b1aa3064b6
Address PR comments
2021-10-09 05:47:06 -04:00
Yechan Bae
fdc06d9b2b
Improve error messages
2021-10-09 05:38:19 -04:00
Yechan Bae
759200b699
Handle PR feedbacks first round
2021-10-09 05:38:19 -04:00
Yechan Bae
452181c69d
Implement uninit_vec lint
2021-10-09 05:38:19 -04:00