X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-core%2Fsrc%2Frefs.rs;h=4c2e2903a0f3e11b4a02a093f93d158398ff6656;hb=049474a0116e080d49c349256da7fae5f1a1b9c3;hp=de1c4fc3b5f7809120bdce7b0e93a82105892287;hpb=e243ceb4d694cc08767ad70027bb6963f4cefea3;p=nihav.git diff --git a/nihav-core/src/refs.rs b/nihav-core/src/refs.rs index de1c4fc..4c2e290 100644 --- a/nihav-core/src/refs.rs +++ b/nihav-core/src/refs.rs @@ -18,7 +18,7 @@ impl NABufferData { 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 Drop for NABufferRef { 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); } } }