diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs index ad68ffb402e1..d99b9b109efd 100644 --- a/src/librustc/middle/trans/closure.rs +++ b/src/librustc/middle/trans/closure.rs @@ -486,6 +486,9 @@ pub fn make_closure_glue( } } +// note: unique pointers no longer copy the type descriptor in the take glue, +// so we cannot delegate to the unique box take glue here without copying it +// ourselves pub fn make_opaque_cbox_take_glue( bcx: block, sigil: ast::Sigil, diff --git a/src/librustc/middle/trans/uniq.rs b/src/librustc/middle/trans/uniq.rs index d27d6efb2416..ada85c82b304 100644 --- a/src/librustc/middle/trans/uniq.rs +++ b/src/librustc/middle/trans/uniq.rs @@ -52,13 +52,5 @@ pub fn duplicate(bcx: block, src_box: ValueRef, src_ty: ty::t) -> Result { } = malloc_unique(bcx, body_datum.ty); body_datum.copy_to(bcx, datum::INIT, dst_body); - // Copy the type descriptor - let src_tydesc_ptr = GEPi(bcx, src_box, - [0u, back::abi::box_field_tydesc]); - let dst_tydesc_ptr = GEPi(bcx, dst_box, - [0u, back::abi::box_field_tydesc]); - let td = Load(bcx, src_tydesc_ptr); - Store(bcx, td, dst_tydesc_ptr); - - return rslt(bcx, dst_box); + rslt(bcx, dst_box) }