mirror of https://github.com/rust-lang/rust.git
Fix lint_cstring_as_ptr for expect
This commit is contained in:
parent
d23e6b396a
commit
c23a5c586f
|
@ -937,7 +937,9 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Methods {
|
||||||
["is_some", "position"] => lint_search_is_some(cx, expr, "position", arg_lists[1], arg_lists[0]),
|
["is_some", "position"] => lint_search_is_some(cx, expr, "position", arg_lists[1], arg_lists[0]),
|
||||||
["is_some", "rposition"] => lint_search_is_some(cx, expr, "rposition", arg_lists[1], arg_lists[0]),
|
["is_some", "rposition"] => lint_search_is_some(cx, expr, "rposition", arg_lists[1], arg_lists[0]),
|
||||||
["extend", ..] => lint_extend(cx, expr, arg_lists[0]),
|
["extend", ..] => lint_extend(cx, expr, arg_lists[0]),
|
||||||
["as_ptr", "unwrap"] => lint_cstring_as_ptr(cx, expr, &arg_lists[1][0], &arg_lists[0][0]),
|
["as_ptr", "unwrap"] | ["as_ptr", "expect"] => {
|
||||||
|
lint_cstring_as_ptr(cx, expr, &arg_lists[1][0], &arg_lists[0][0])
|
||||||
|
},
|
||||||
["nth", "iter"] => lint_iter_nth(cx, expr, arg_lists[1], false),
|
["nth", "iter"] => lint_iter_nth(cx, expr, arg_lists[1], false),
|
||||||
["nth", "iter_mut"] => lint_iter_nth(cx, expr, arg_lists[1], true),
|
["nth", "iter_mut"] => lint_iter_nth(cx, expr, arg_lists[1], true),
|
||||||
["next", "skip"] => lint_iter_skip_next(cx, expr),
|
["next", "skip"] => lint_iter_skip_next(cx, expr),
|
||||||
|
|
|
@ -5,4 +5,5 @@ fn temporary_cstring() {
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
|
|
||||||
CString::new("foo").unwrap().as_ptr();
|
CString::new("foo").unwrap().as_ptr();
|
||||||
|
CString::new("foo").expect("dummy").as_ptr();
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,5 +12,18 @@ help: assign the `CString` to a variable to extend its lifetime
|
||||||
LL | CString::new("foo").unwrap().as_ptr();
|
LL | CString::new("foo").unwrap().as_ptr();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: you are getting the inner pointer of a temporary `CString`
|
||||||
|
--> $DIR/cstring.rs:8:5
|
||||||
|
|
|
||||||
|
LL | CString::new("foo").expect("dummy").as_ptr();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: that pointer will be invalid outside this expression
|
||||||
|
help: assign the `CString` to a variable to extend its lifetime
|
||||||
|
--> $DIR/cstring.rs:8:5
|
||||||
|
|
|
||||||
|
LL | CString::new("foo").expect("dummy").as_ptr();
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue