Skip to content

Ignoring return value from Box::from_raw does not cause warning #99269

@rhysd

Description

@rhysd
Contributor

I tried this code:

#![allow(dead_code)]

unsafe fn free<T>(ptr: *mut T) {
    Box::from_raw(ptr);
}

fn main() {}

I expected to see this happen: explanation

The same as CString::from_raw, I expected the following warning:

warning: unused return value of `Box::<T>::from_raw` that must be used
 --> foo.rs:4:5
  |
4 |     Box::from_raw(ptr);
  |     ^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_must_use)]` on by default
  = note: call `drop(from_raw(ptr))` if you intend to drop the `Box`

Instead, this happened: explanation

No warning is reported.

Meta

rustc --version --verbose:

rustc 1.62.0 (a8314ef7d 2022-06-27)
binary: rustc
commit-hash: a8314ef7d0ec7b75c336af2c9857bfaf43002bfc
commit-date: 2022-06-27
host: x86_64-apple-darwin
release: 1.62.0
LLVM version: 14.0.5

Note that #[must_use] was added to CString::from_raw at #89753 following the activity tracked at #89692.

I'm creating this issue after discussion at rust-lang/regex#882.

Activity

added 2 commits that reference this issue on Jul 16, 2022
8ec29c7
96474a7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @rhysd

      Issue actions

        Ignoring return value from `Box::from_raw` does not cause warning · Issue #99269 · rust-lang/rust