diff --git a/src/timer.rs b/src/timer.rs index e864cbd..5f29825 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -31,7 +31,7 @@ impl Default for TimerType { } #[derive(Default)] -pub struct TimerList { +struct TimerList { holder: Rc::>, wp: Rc::>>, timer_entry: Rc::>>, @@ -89,12 +89,12 @@ impl Timer { } fn new_timer_list(&mut self) -> Rc::> { - let p: Rc::>; - p = self.free_timer_list.borrow().first_entry().upgrade().unwrap(); - if Rc::weak_count(&p.borrow().wp) > 0 { - p.borrow_mut().wp = Rc::new(p.borrow().holder.clone()); - } + let mut p: Rc::>; if self.free_timer_list.borrow().empty() { + p = self.free_timer_list.borrow().first_entry().upgrade().unwrap(); + if Rc::weak_count(&p.borrow().wp) > 0 { + p.borrow_mut().wp = Rc::new(p.borrow().holder.clone()); + } } else { p = Rc::new(RefCell::new(TimerList{ holder: Default::default(),