diff options
| author | bors <bors@rust-lang.org> | 2019-06-18 05:16:26 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-06-18 05:16:26 +0000 |
| commit | a6a8f6c5b37597bf69178ee5cc6c185b7137f5d8 (patch) | |
| tree | 6a337af65cf1c71cfe81bf552912e67f949b3d4c /src/test/run-pass | |
| parent | 704ab2ba10c4d878f879047cdac94a61751ce943 (diff) | |
| parent | 7d69d4ced23c446d6af341e3f9dc031a302150fc (diff) | |
| download | rust-a6a8f6c5b37597bf69178ee5cc6c185b7137f5d8.tar.gz rust-a6a8f6c5b37597bf69178ee5cc6c185b7137f5d8.zip | |
Auto merge of #61864 - lzutao:ptr-null, r=sfackler
Make use of `ptr::null(_mut)` instead of casting zero
There are few places that I don't replace the zero casting pointer with `ptr::null`
or `ptr::null_mut`:
```bash
% git grep -E '[ ([{]0 as \*'
src/libcore/ptr/mod.rs:216:pub const fn null<T>() -> *const T { 0 as *const T }
src/libcore/ptr/mod.rs:231:pub const fn null_mut<T>() -> *mut T { 0 as *mut T }
src/test/run-pass/consts/const-cast-ptr-int.rs:12:static a: TestStruct = TestStruct{x: 0 as *const u8};
src/test/ui/issues/issue-45730.rs:5: let x: *const _ = 0 as *const _; //~ ERROR cannot cast
src/test/ui/issues/issue-45730.rs:8: let x = 0 as *const i32 as *const _ as *mut _; //~ ERROR cannot cast
src/test/ui/issues/issue-45730.stderr:14:LL | let x: *const _ = 0 as *const _;
src/test/ui/issues/issue-45730.stderr:24:LL | let x = 0 as *const i32 as *const _ as *mut _;
src/test/ui/lint/lint-forbid-internal-unsafe.rs:15: println!("{}", evil!(*(0 as *const u8)));
src/test/ui/order-dependent-cast-inference.rs:5: let mut y = 0 as *const _;
src/test/ui/order-dependent-cast-inference.stderr:4:LL | let mut y = 0 as *const _;
```
r? @sfackler
Diffstat (limited to 'src/test/run-pass')
| -rw-r--r-- | src/test/run-pass/cast.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/cleanup-shortcircuit.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/consts/const-block.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issues/issue-13259-windows-tcb-trash.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issues/issue-19001.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/issues/issue-39367.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/issues/issue-46069.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/structs-enums/enum-null-pointer-opt.rs | 2 |
8 files changed, 10 insertions, 10 deletions
diff --git a/src/test/run-pass/cast.rs b/src/test/run-pass/cast.rs index 37add8446f4..c7977f461df 100644 --- a/src/test/run-pass/cast.rs +++ b/src/test/run-pass/cast.rs @@ -15,5 +15,5 @@ pub fn main() { // Test that `_` is correctly inferred. let x = &"hello"; let mut y = x as *const _; - y = 0 as *const _; + y = core::ptr::null_mut(); } diff --git a/src/test/run-pass/cleanup-shortcircuit.rs b/src/test/run-pass/cleanup-shortcircuit.rs index 118fa0083ab..6e67a276d4f 100644 --- a/src/test/run-pass/cleanup-shortcircuit.rs +++ b/src/test/run-pass/cleanup-shortcircuit.rs @@ -16,6 +16,6 @@ pub fn main() { if args.len() >= 2 && args[1] == "signal" { // Raise a segfault. - unsafe { *(0 as *mut isize) = 0; } + unsafe { *std::ptr::null_mut::<isize>() = 0; } } } diff --git a/src/test/run-pass/consts/const-block.rs b/src/test/run-pass/consts/const-block.rs index 012523a61ef..7172a34c8cf 100644 --- a/src/test/run-pass/consts/const-block.rs +++ b/src/test/run-pass/consts/const-block.rs @@ -21,7 +21,7 @@ static BLOCK_EXPLICIT_UNIT: () = { () }; static BLOCK_IMPLICIT_UNIT: () = { }; static BLOCK_FLOAT: f64 = { 1.0 }; static BLOCK_ENUM: Option<usize> = { Some(100) }; -static BLOCK_STRUCT: Foo = { Foo { a: 12, b: 0 as *const () } }; +static BLOCK_STRUCT: Foo = { Foo { a: 12, b: std::ptr::null::<()>() } }; static BLOCK_UNSAFE: usize = unsafe { 1000 }; static BLOCK_FN_INFERRED: fn(usize) -> usize = { foo }; @@ -36,7 +36,7 @@ pub fn main() { assert_eq!(BLOCK_IMPLICIT_UNIT, ()); assert_eq!(BLOCK_FLOAT, 1.0_f64); assert_eq!(BLOCK_STRUCT.a, 12); - assert_eq!(BLOCK_STRUCT.b, 0 as *const ()); + assert_eq!(BLOCK_STRUCT.b, std::ptr::null::<()>()); assert_eq!(BLOCK_ENUM, Some(100)); assert_eq!(BLOCK_UNSAFE, 1000); assert_eq!(BLOCK_FN_INFERRED(300), 300); diff --git a/src/test/run-pass/issues/issue-13259-windows-tcb-trash.rs b/src/test/run-pass/issues/issue-13259-windows-tcb-trash.rs index d79d34de571..740e7780de6 100644 --- a/src/test/run-pass/issues/issue-13259-windows-tcb-trash.rs +++ b/src/test/run-pass/issues/issue-13259-windows-tcb-trash.rs @@ -23,8 +23,8 @@ mod imp { pub fn test() { let mut buf: [u16; 50] = [0; 50]; let ret = unsafe { - FormatMessageW(0x1000, 0 as *mut _, 1, 0x400, - buf.as_mut_ptr(), buf.len() as u32, 0 as *const _) + FormatMessageW(0x1000, core::ptr::null_mut(), 1, 0x400, + buf.as_mut_ptr(), buf.len() as u32, core::ptr::null()) }; // On some 32-bit Windowses (Win7-8 at least) this will panic with segmented // stacks taking control of pvArbitrary diff --git a/src/test/run-pass/issues/issue-19001.rs b/src/test/run-pass/issues/issue-19001.rs index 85f7a84ac29..76c380c2fc9 100644 --- a/src/test/run-pass/issues/issue-19001.rs +++ b/src/test/run-pass/issues/issue-19001.rs @@ -7,5 +7,5 @@ struct Loopy { } fn main() { - let _t = Loopy { ptr: 0 as *mut _ }; + let _t = Loopy { ptr: core::ptr::null_mut() }; } diff --git a/src/test/run-pass/issues/issue-39367.rs b/src/test/run-pass/issues/issue-39367.rs index 2e2b480e066..8314be3d14c 100644 --- a/src/test/run-pass/issues/issue-39367.rs +++ b/src/test/run-pass/issues/issue-39367.rs @@ -15,7 +15,7 @@ fn arena() -> &'static ArenaSet<Vec<u8>> { fn require_sync<T: Sync>(_: &T) { } unsafe fn __stability() -> &'static ArenaSet<Vec<u8>> { use std::mem::transmute; - static mut DATA: *const ArenaSet<Vec<u8>> = 0 as *const ArenaSet<Vec<u8>>; + static mut DATA: *const ArenaSet<Vec<u8>> = std::ptr::null_mut(); static mut ONCE: Once = Once::new(); ONCE.call_once(|| { diff --git a/src/test/run-pass/issues/issue-46069.rs b/src/test/run-pass/issues/issue-46069.rs index fba2a2ebe3b..1d4f789828d 100644 --- a/src/test/run-pass/issues/issue-46069.rs +++ b/src/test/run-pass/issues/issue-46069.rs @@ -17,7 +17,7 @@ fn copy_ex() { } fn main() { - let _f = 0 as *mut <Fuse<Cloned<Iter<u8>>> as Iterator>::Item; + let _f: *mut <Fuse<Cloned<Iter<u8>>> as Iterator>::Item = std::ptr::null_mut(); copy_ex(); } diff --git a/src/test/run-pass/structs-enums/enum-null-pointer-opt.rs b/src/test/run-pass/structs-enums/enum-null-pointer-opt.rs index f871c218558..32fdbf620a9 100644 --- a/src/test/run-pass/structs-enums/enum-null-pointer-opt.rs +++ b/src/test/run-pass/structs-enums/enum-null-pointer-opt.rs @@ -38,7 +38,7 @@ fn main() { // The optimization can't apply to raw pointers or unions with a ZST field. assert!(size_of::<Option<*const isize>>() != size_of::<*const isize>()); - assert!(Some(0 as *const isize).is_some()); // Can't collapse None to null + assert!(Some(std::ptr::null::<isize>()).is_some()); // Can't collapse None to null assert_ne!(size_of::<fn(isize)>(), size_of::<Option<MaybeUninitUnion<fn(isize)>>>()); assert_ne!(size_of::<&str>(), size_of::<Option<MaybeUninitUnion<&str>>>()); assert_ne!(size_of::<NonNull<isize>>(), size_of::<Option<MaybeUninitUnion<NonNull<isize>>>>()); |
