]> git.nihav.org Git - nihav.git/blobdiff - nihav-core/src/refs.rs
core/refs: fix leak
[nihav.git] / nihav-core / src / refs.rs
index de1c4fc3b5f7809120bdce7b0e93a82105892287..4c2e2903a0f3e11b4a02a093f93d158398ff6656 100644 (file)
@@ -18,7 +18,7 @@ impl<T> NABufferData<T> {
         obj.refs.fetch_add(1, Ordering::SeqCst);
     }
     fn dec_refs(obj: &mut Self) -> bool {
-        obj.refs.fetch_sub(1, Ordering::SeqCst) == 0
+        obj.refs.fetch_sub(1, Ordering::SeqCst) == 1
     }
     fn get_num_refs(obj: &Self) -> usize {
         obj.refs.load(Ordering::Relaxed)
@@ -83,7 +83,8 @@ impl<T> Drop for NABufferRef<T> {
     fn drop(&mut self) {
         unsafe {
             if NABufferData::dec_refs(self.ptr.as_mut().unwrap()) {
-                std::ptr::drop_in_place(self.ptr);
+                let data = Box::from_raw(self.ptr);
+                std::mem::drop(data);
             }
         }
     }