drive-by fix: scheduled drops are executed in reverse order.
That is, scheduled drops are executed in reverse order, so for correctness, we *schedule* the lifetime end before we schedule the drop, so that when they are executed, the drop will be executed *before* the lifetime end.
This commit is contained in:
parent
b0a4808757
commit
24f213d023
@ -916,8 +916,8 @@ fn insert_lllocals<'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>,
|
||||
|
||||
let datum = Datum::new(llval, binding_info.ty, Lvalue);
|
||||
if let Some(cs) = cs {
|
||||
bcx.fcx.schedule_drop_and_fill_mem(cs, llval, binding_info.ty);
|
||||
bcx.fcx.schedule_lifetime_end(cs, binding_info.llmatch);
|
||||
bcx.fcx.schedule_drop_and_fill_mem(cs, llval, binding_info.ty);
|
||||
}
|
||||
|
||||
debug!("binding {} to {}", binding_info.id, bcx.val_to_string(llval));
|
||||
|
Loading…
Reference in New Issue
Block a user