diff --git a/src/com.rs b/src/com.rs index d94d3d3..15aa814 100644 --- a/src/com.rs +++ b/src/com.rs @@ -69,7 +69,11 @@ impl Debug for ComPtr { } impl Drop for ComPtr { fn drop(&mut self) { - unsafe { self.as_unknown().Release(); } + unsafe { + let ptr = self.as_raw() as *mut IUnknown; + let release_fn = (*(*ptr).lpVtbl).Release; + release_fn(ptr); + } } } impl PartialEq> for ComPtr where T: Interface {