diff options
| author | Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de> | 2018-01-25 12:12:19 +0100 |
|---|---|---|
| committer | Oliver Schneider <git-spam-no-reply9815368754983@oli-obk.de> | 2018-03-08 08:34:09 +0100 |
| commit | 3d8c4d4fe9358d23d9edd6ac016477f91f1de997 (patch) | |
| tree | 29f1a6171b8573601eb029c3e67b1255d454fc3b | |
| parent | d26ebec81ce5d450f1bf3065ae990e6b1ca1c551 (diff) | |
| download | rust-3d8c4d4fe9358d23d9edd6ac016477f91f1de997.tar.gz rust-3d8c4d4fe9358d23d9edd6ac016477f91f1de997.zip | |
Don't read from zero sized fields
| -rw-r--r-- | src/librustc_mir/interpret/place.rs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/librustc_mir/interpret/place.rs b/src/librustc_mir/interpret/place.rs index e82a252a95b..4ca68068728 100644 --- a/src/librustc_mir/interpret/place.rs +++ b/src/librustc_mir/interpret/place.rs @@ -123,6 +123,9 @@ impl<'a, 'mir, 'tcx, M: Machine<'mir, 'tcx>> EvalContext<'a, 'mir, 'tcx, M> { } let field_index = field.index(); let field = base_layout.field(self, field_index)?; + if field.size.bytes() == 0 { + return Ok(Some((Value::ByVal(PrimVal::Undef), field.ty))) + } let offset = base_layout.fields.offset(field_index); match base { // the field covers the entire type |
