From dc588497db727a3ba943aaecc83d2a07dc6d6b0a Mon Sep 17 00:00:00 2001 From: Jeff Muizelaar Date: Wed, 14 Oct 2020 13:29:28 -0400 Subject: [PATCH] Fix the type of Arc::from_raw(). Previously we were mistakenly creating an Arc instead of an Arc. This also changes the test to catch this problem. --- core-graphics/src/data_provider.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core-graphics/src/data_provider.rs b/core-graphics/src/data_provider.rs index 53c2cd8..e8bb0a0 100644 --- a/core-graphics/src/data_provider.rs +++ b/core-graphics/src/data_provider.rs @@ -60,7 +60,7 @@ impl CGDataProvider { } unsafe extern "C" fn release(info: *mut c_void, _: *const c_void, _: size_t) { - drop(Arc::from_raw(info)) + drop(Arc::from_raw(info as *mut T)) } } @@ -136,9 +136,10 @@ fn test_data_provider() { let dropped = Arc::new(AtomicBool::default()); let l = Arc::new(VecWrapper {inner: vec![5], dropped: dropped.clone() }); let m = l.clone(); - drop(CGDataProvider::from_buffer(l)); - assert!(!dropped.load(SeqCst)); + let dp = CGDataProvider::from_buffer(l); drop(m); + assert!(!dropped.load(SeqCst)); + drop(dp); assert!(dropped.load(SeqCst)) }