mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 18:53:39 +00:00
Update lint description for new() and default()
This commit is contained in:
parent
03fed75c89
commit
4ed3a4fe2f
@ -13,14 +13,16 @@ use rustc_span::{sym, Span};
|
||||
declare_clippy_lint! {
|
||||
/// ### What it does
|
||||
/// Checks for `set_len()` call that creates `Vec` with uninitialized elements.
|
||||
/// This is commonly caused by calling `set_len()` right after after calling
|
||||
/// `with_capacity()` or `reserve()`.
|
||||
/// This is commonly caused by calling `set_len()` right after allocating or
|
||||
/// reserving a buffer with `new()`, `default()`, `with_capacity()`, or `reserve()`.
|
||||
///
|
||||
/// ### Why is this bad?
|
||||
/// It creates a `Vec` with uninitialized data, which leads to
|
||||
/// undefined behavior with most safe operations.
|
||||
/// undefined behavior with most safe operations. Notably, uninitialized
|
||||
/// `Vec<u8>` must not be used with generic `Read`.
|
||||
///
|
||||
/// Notably, uninitialized `Vec<u8>` must not be used with generic `Read`.
|
||||
/// Moreover, calling `set_len()` on a `Vec` created with `new()` or `default()`
|
||||
/// creates out-of-bound values that lead to heap memory corruption when used.
|
||||
///
|
||||
/// ### Known Problems
|
||||
/// This lint only checks directly adjacent statements.
|
||||
|
Loading…
Reference in New Issue
Block a user