diff --git a/src/timer.rs b/src/timer.rs index cc87d16..053f1aa 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -336,6 +336,12 @@ impl Timer { None => { } } + if Rc::weak_count(&v.borrow().wp) > 0 { + v.borrow_mut().wp = Rc::new(v.borrow().holder.clone()); + } + crate::ListHead::add_tail(&self.free_timer_list, + &v.borrow_mut().timer_entry); + self.free_timer_num += 1; } None => { }