summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/standalone_miri/miri.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/standalone_miri/miri.cpp b/tools/standalone_miri/miri.cpp
index e6b56192..8fe941d9 100644
--- a/tools/standalone_miri/miri.cpp
+++ b/tools/standalone_miri/miri.cpp
@@ -371,7 +371,9 @@ struct MirHelpers
size_t slice_inner_size;
if( ty.has_slice_meta(slice_inner_size) ) {
- size = (ty.get_wrapper() == nullptr ? ty.get_size() : 0) + meta_val->read_usize(0) * slice_inner_size;
+ // Slice metadata, add the base size (if it's a struct) to the variable size
+ // - `get_wrapper` will return non-null for `[T]`, special-case `str`
+ size = (ty != RawType::Str && ty.get_wrapper() == nullptr ? ty.get_size() : 0) + meta_val->read_usize(0) * slice_inner_size;
}
//else if( ty == RawType::TraitObject) {
// // NOTE: Getting the size from the allocation is semi-valid, as you can't sub-slice trait objects