Skip to content

Commit 2ff8e6d

Browse files
committed
Fix copy/copy_nonoverlapping paths.
1 parent 42c2c75 commit 2ff8e6d

File tree

4 files changed

+33
-11
lines changed

4 files changed

+33
-11
lines changed

clippy_lints/src/size_of_in_element_count.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ fn get_size_of_ty(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>, inverted: bool)
6565

6666
fn get_pointee_ty_and_count_expr(cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) -> Option<(Ty<'tcx>, &'tcx Expr<'tcx>)> {
6767
const FUNCTIONS: [&[&str]; 8] = [
68-
&paths::COPY_NONOVERLAPPING,
69-
&paths::COPY,
68+
&paths::PTR_COPY_NONOVERLAPPING,
69+
&paths::PTR_COPY,
7070
&paths::WRITE_BYTES,
7171
&paths::PTR_SWAP_NONOVERLAPPING,
7272
&paths::PTR_SLICE_FROM_RAW_PARTS,

clippy_utils/src/paths.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ pub const BTREESET: [&str; 5] = ["alloc", "collections", "btree", "set", "BTreeS
1818
pub const CLONE_TRAIT_METHOD: [&str; 4] = ["core", "clone", "Clone", "clone"];
1919
pub const CMP_MAX: [&str; 3] = ["core", "cmp", "max"];
2020
pub const CMP_MIN: [&str; 3] = ["core", "cmp", "min"];
21-
pub const COPY: [&str; 4] = ["core", "intrinsics", "", "copy_nonoverlapping"];
22-
pub const COPY_NONOVERLAPPING: [&str; 4] = ["core", "intrinsics", "", "copy"];
2321
pub const COW: [&str; 3] = ["alloc", "borrow", "Cow"];
2422
pub const CSTRING_AS_C_STR: [&str; 5] = ["std", "ffi", "c_str", "CString", "as_c_str"];
2523
pub const DEFAULT_TRAIT: [&str; 3] = ["core", "default", "Default"];
@@ -101,8 +99,8 @@ pub const PERMISSIONS_FROM_MODE: [&str; 7] = ["std", "sys", "unix", "ext", "fs",
10199
pub const POLL: [&str; 4] = ["core", "task", "poll", "Poll"];
102100
pub const POLL_PENDING: [&str; 5] = ["core", "task", "poll", "Poll", "Pending"];
103101
pub const POLL_READY: [&str; 5] = ["core", "task", "poll", "Poll", "Ready"];
104-
pub const PTR_COPY: [&str; 3] = ["core", "ptr", "copy"];
105-
pub const PTR_COPY_NONOVERLAPPING: [&str; 3] = ["core", "ptr", "copy_nonoverlapping"];
102+
pub const PTR_COPY: [&str; 4] = ["core", "intrinsics", "", "copy"];
103+
pub const PTR_COPY_NONOVERLAPPING: [&str; 4] = ["core", "intrinsics", "", "copy_nonoverlapping"];
106104
pub const PTR_EQ: [&str; 3] = ["core", "ptr", "eq"];
107105
pub const PTR_NULL: [&str; 3] = ["core", "ptr", "null"];
108106
pub const PTR_NULL_MUT: [&str; 3] = ["core", "ptr", "null_mut"];

tests/ui/invalid_null_ptr_usage.fixed

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ fn main() {
77

88
let _slice: &[usize] = std::slice::from_raw_parts_mut(core::ptr::NonNull::dangling().as_ptr(), 0);
99

10-
std::ptr::copy::<usize>(std::ptr::null(), std::ptr::NonNull::dangling().as_ptr(), 0);
11-
std::ptr::copy::<usize>(std::ptr::NonNull::dangling().as_ptr(), std::ptr::null_mut(), 0);
10+
std::ptr::copy::<usize>(core::ptr::NonNull::dangling().as_ptr(), std::ptr::NonNull::dangling().as_ptr(), 0);
11+
std::ptr::copy::<usize>(std::ptr::NonNull::dangling().as_ptr(), core::ptr::NonNull::dangling().as_ptr(), 0);
1212

13-
std::ptr::copy_nonoverlapping::<usize>(std::ptr::null(), std::ptr::NonNull::dangling().as_ptr(), 0);
14-
std::ptr::copy_nonoverlapping::<usize>(std::ptr::NonNull::dangling().as_ptr(), std::ptr::null_mut(), 0);
13+
std::ptr::copy_nonoverlapping::<usize>(core::ptr::NonNull::dangling().as_ptr(), std::ptr::NonNull::dangling().as_ptr(), 0);
14+
std::ptr::copy_nonoverlapping::<usize>(std::ptr::NonNull::dangling().as_ptr(), core::ptr::NonNull::dangling().as_ptr(), 0);
1515

1616
struct A; // zero sized struct
1717
assert_eq!(std::mem::size_of::<A>(), 0);

tests/ui/invalid_null_ptr_usage.stderr

+25-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,30 @@ error: pointer must be non-null
1818
LL | let _slice: &[usize] = std::slice::from_raw_parts_mut(std::ptr::null_mut(), 0);
1919
| ^^^^^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
2020

21+
error: pointer must be non-null
22+
--> $DIR/invalid_null_ptr_usage.rs:10:33
23+
|
24+
LL | std::ptr::copy::<usize>(std::ptr::null(), std::ptr::NonNull::dangling().as_ptr(), 0);
25+
| ^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
26+
27+
error: pointer must be non-null
28+
--> $DIR/invalid_null_ptr_usage.rs:11:73
29+
|
30+
LL | std::ptr::copy::<usize>(std::ptr::NonNull::dangling().as_ptr(), std::ptr::null_mut(), 0);
31+
| ^^^^^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
32+
33+
error: pointer must be non-null
34+
--> $DIR/invalid_null_ptr_usage.rs:13:48
35+
|
36+
LL | std::ptr::copy_nonoverlapping::<usize>(std::ptr::null(), std::ptr::NonNull::dangling().as_ptr(), 0);
37+
| ^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
38+
39+
error: pointer must be non-null
40+
--> $DIR/invalid_null_ptr_usage.rs:14:88
41+
|
42+
LL | std::ptr::copy_nonoverlapping::<usize>(std::ptr::NonNull::dangling().as_ptr(), std::ptr::null_mut(), 0);
43+
| ^^^^^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
44+
2145
error: pointer must be non-null
2246
--> $DIR/invalid_null_ptr_usage.rs:19:36
2347
|
@@ -126,5 +150,5 @@ error: pointer must be non-null
126150
LL | std::ptr::write_bytes::<usize>(std::ptr::null_mut(), 42, 0);
127151
| ^^^^^^^^^^^^^^^^^^^^ help: change this to: `core::ptr::NonNull::dangling().as_ptr()`
128152

129-
error: aborting due to 21 previous errors
153+
error: aborting due to 25 previous errors
130154

0 commit comments

Comments
 (0)