-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Do not suppress temporary_cstring_as_ptr in macros. #109944
Conversation
(rustbot has picked a reviewer for you, use r? to override) |
Weird. |
☀️ Test successful - checks-actions |
Finished benchmarking commit (6032700): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countThis is a highly reliable metric that was used to determine the overall result at the top of this comment.
Max RSS (memory usage)ResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResultsThis is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
|
Rust nightly recently [started] issuing the following warning when compiling coreutils: [started]: rust-lang/rust#109944 ``` warning: getting the inner pointer of a temporary `CString` --> src/uucore/src/lib/features/entries.rs:324:67 | 324 | let data = $fnam(CString::new(k).unwrap().as_ptr()); | ------------------------ ^^^^^^ this pointer will be invalid | | | this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime ... 340 | f!(getpwnam, getpwuid, uid_t, Passwd); | ------------------------------------- in this macro invocation | = note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned = help: for more information, see https://doc.rust-lang.org/reference/destructors.html = note: `#[warn(temporary_cstring_as_ptr)]` on by default = note: this warning originates in the macro `f` (in Nightly builds, run with -Z macro-backtrace for more info) ``` There doesn't seem to be an actual problem in this case, as the pointer is only used within the statement.
There isn't really a reason to skip the lint when part of the expression comes from an expansion.
Fixes #94694