From 857ad58dce92eb2efcd768b588aded67b9d39418 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Tue, 14 Feb 2012 15:59:41 +0100 Subject: Fix double-cleanup bug in patch 57c7645cb83e609ff Things would run fine (probably by sheer luck) but valgrind didn't approve. --- src/comp/middle/trans/base.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/comp/middle/trans/base.rs b/src/comp/middle/trans/base.rs index 08e3e04cb91..9e8cfbb321c 100644 --- a/src/comp/middle/trans/base.rs +++ b/src/comp/middle/trans/base.rs @@ -3302,9 +3302,11 @@ fn trans_expr(bcx: @block_ctxt, e: @ast::expr, dest: dest) -> @block_ctxt { ast::expr_call(f, args, _) { ret trans_call(bcx, f, args, e.id, dest); } - ast::expr_field(_, _, _) { + ast::expr_field(base, _, _) { + if dest == ignore { ret trans_expr(bcx, base, ignore); } let callee = trans_callee(bcx, e), ty = expr_ty(bcx, e); let lv = lval_maybe_callee_to_lval(callee, ty); + revoke_clean(lv.bcx, lv.val); ret memmove_ty(lv.bcx, get_dest_addr(dest), lv.val, ty); } ast::expr_index(base, idx) { -- cgit 1.4.1-3-g733a5