Rollup merge of #120248 - WaffleLapkin:bonk-ptr-object-casts, r=compi… · model-checking/verify-rust-std@57cea32

Original file line numberDiff line numberDiff line change

@@ -2374,7 +2374,7 @@ impl dyn Error + Send {

23742374

let err: Box<dyn Error> = self;

23752375

<dyn Error>::downcast(err).map_err(|s| unsafe {

23762376

// Reapply the `Send` marker.

2377-

Box::from_raw(Box::into_raw(s) as *mut (dyn Error + Send))

2377+

mem::transmute::<Box<dyn Error>, Box<dyn Error + Send>>(s)

23782378

})

23792379

}

23802380

}

@@ -2387,8 +2387,8 @@ impl dyn Error + Send + Sync {

23872387

pub fn downcast<T: Error + 'static>(self: Box<Self>) -> Result<Box<T>, Box<Self>> {

23882388

let err: Box<dyn Error> = self;

23892389

<dyn Error>::downcast(err).map_err(|s| unsafe {

2390-

// Reapply the `Send + Sync` marker.

2391-

Box::from_raw(Box::into_raw(s) as *mut (dyn Error + Send + Sync))

2390+

// Reapply the `Send + Sync` markers.

2391+

mem::transmute::<Box<dyn Error>, Box<dyn Error + Send + Sync>>(s)

23922392

})

23932393

}

23942394

}