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

Original file line number Diff line number Diff line change
@@ -2374,7 +2374,7 @@ impl dyn Error + Send {
2374 2374 let err: Box<dyn Error> = self;
2375 2375 <dyn Error>::downcast(err).map_err(|s
2376 2376 // 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)
2378 2378 })
2379 2379 }
2380 2380 }
@@ -2387,8 +2387,8 @@ impl dyn Error + Send + Sync {
2387 2387 pub fn downcast<T: Error + 'static>(self: Box<Self>) -> Result<Box<T>, Box<Self>> {
2388 2388 let err: Box<dyn Error> = self;
2389 2389 <dyn Error>::downcast(err).map_err(|s
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)
2392 2392 })
2393 2393 }
2394 2394 }