diff options
| author | Ralf Jung <post@ralfj.de> | 2024-08-09 10:54:07 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2024-08-09 10:54:07 +0200 |
| commit | dc54f1dccda757c2fb19c53914045da23672e457 (patch) | |
| tree | 2c4d4aa957c9a3dac9409aae2042bb57c0ddd637 | |
| parent | 21f91750ab98a8ea7bab6386061a254ad0dfd1f4 (diff) | |
| download | rust-dc54f1dccda757c2fb19c53914045da23672e457.tar.gz rust-dc54f1dccda757c2fb19c53914045da23672e457.zip | |
miri_print_borrow_state: show error when AllocId is invalid
| -rw-r--r-- | src/tools/miri/src/shims/foreign_items.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs index 7f6f63ff5e7..98e095447c3 100644 --- a/src/tools/miri/src/shims/foreign_items.rs +++ b/src/tools/miri/src/shims/foreign_items.rs @@ -289,8 +289,12 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> { let [id, show_unnamed] = this.check_shim(abi, Abi::Rust, link_name, args)?; let id = this.read_scalar(id)?.to_u64()?; let show_unnamed = this.read_scalar(show_unnamed)?.to_bool()?; - if let Some(id) = std::num::NonZero::new(id) { - this.print_borrow_state(AllocId(id), show_unnamed)?; + if let Some(id) = std::num::NonZero::new(id).map(AllocId) + && this.get_alloc_info(id).2 == AllocKind::LiveData + { + this.print_borrow_state(id, show_unnamed)?; + } else { + eprintln!("{id} is not the ID of a live data allocation"); } } "miri_pointer_name" => { |
