Fix insufficient logic when searching for the underlying allocation
in the `invalid_reference_casting` lint, when trying to lint on bigger memory layout casts.
This commit is contained in:
parent
02f7806ecd
commit
cd6a0c8c77
2 changed files with 15 additions and 0 deletions
|
@ -199,6 +199,13 @@ fn is_cast_to_bigger_memory_layout<'tcx>(
|
|||
let e_alloc = cx.expr_or_init(e);
|
||||
let e_alloc =
|
||||
if let ExprKind::AddrOf(_, _, inner_expr) = e_alloc.kind { inner_expr } else { e_alloc };
|
||||
|
||||
// if the current expr looks like this `&mut expr[index]` then just looking
|
||||
// at `expr[index]` won't give us the underlying allocation, so we just skip it
|
||||
if let ExprKind::Index(..) = e_alloc.kind {
|
||||
return None;
|
||||
}
|
||||
|
||||
let alloc_ty = cx.typeck_results().node_type(e_alloc.hir_id);
|
||||
|
||||
// if we do not find it we bail out, as this may not be UB
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue