From ec87aee147cb0c8a8ae7b5db192daa2163207c8a Mon Sep 17 00:00:00 2001 From: Gabor Greif Date: Fri, 21 Aug 2020 20:12:30 +0200 Subject: [PATCH] Revert #2137, the extra (seemingly leftover) DW_OP_deref is in fact essential (#2156) * Revert "don't leave Deref bytecode for Code chunk (#2137)" This reverts commit 30b9e691367724d37094703ef54a63f87c892056. * add explanation that DW_OP_deref is needed --- crates/debug/src/transform/expression.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/crates/debug/src/transform/expression.rs b/crates/debug/src/transform/expression.rs index 601be39bf6..d21a00d4fe 100644 --- a/crates/debug/src/transform/expression.rs +++ b/crates/debug/src/transform/expression.rs @@ -458,7 +458,8 @@ where Operation::Deref { .. } => { flush_code_chunk!(); parts.push(CompiledExpressionPart::Deref); - continue; + // Don't re-enter the loop here (i.e. continue), because the + // DW_OP_deref still needs to be kept. } _ => { return Ok(None); @@ -724,7 +725,7 @@ mod tests { }, CompiledExpressionPart::Code(vec![35, 5]), CompiledExpressionPart::Deref, - CompiledExpressionPart::Code(vec![159]) + CompiledExpressionPart::Code(vec![6, 159]) ], need_deref: false }