]> git.lizzy.rs Git - rust.git/commitdiff
Use trans_expr_save_in instead of trans_expr when appropriate
authorMarijn Haverbeke <marijnh@gmail.com>
Fri, 14 Oct 2011 09:27:16 +0000 (11:27 +0200)
committerMarijn Haverbeke <marijnh@gmail.com>
Fri, 14 Oct 2011 09:27:16 +0000 (11:27 +0200)
This guards against passing a save_in destination to nil or bot-typed things.

src/comp/middle/trans.rs
src/comp/middle/trans_objects.rs

index 944dfa91a96d9b2ba07ec42433f5e33f916e8189..7b7926a8300f07c7b4382220ecd3a53095bab7c0 100644 (file)
@@ -4272,7 +4272,7 @@ fn trans_temp_lval(bcx: @block_ctxt, e: @ast::expr) -> lval_result {
             ret {bcx: bcx, val: *cell, kind: temporary};
         } else {
             let {bcx, val: scratch} = alloc_ty(bcx, ty);
-            bcx = trans_expr(bcx, e, save_in(scratch));
+            bcx = trans_expr_save_in(bcx, e, scratch);
             add_clean_temp(bcx, scratch, ty);
             ret {bcx: bcx, val: scratch, kind: temporary};
         }
index f2212b1a5fa4f422cf305bed84f368dda7dc9a8b..25b838957fc87f6266f8c702068e4130fee01d15 100644 (file)
@@ -370,7 +370,7 @@ fn trans_anon_obj(bcx: @block_ctxt, sp: span, anon_obj: ast::anon_obj,
             check type_is_tup_like(bcx, body_ty);
             let {bcx: cx, val: body_inner_obj} = GEP_tup_like
                 (bcx, body_ty, body, [0, abi::obj_body_elt_inner_obj]);
-            bcx = trans_expr(cx, e, save_in(body_inner_obj));
+            bcx = trans_expr_save_in(cx, e, body_inner_obj);
           }
         }
         revoke_clean(bcx, box);