diff --git a/components/script/dom/bindings/trace.rs b/components/script/dom/bindings/trace.rs index 6fa16b2c603..5fccae62427 100644 --- a/components/script/dom/bindings/trace.rs +++ b/components/script/dom/bindings/trace.rs @@ -177,6 +177,14 @@ unsafe impl JSTraceable for Box { } } +unsafe impl JSTraceable for [T] { + unsafe fn trace(&self, trc: *mut JSTracer) { + for e in self.iter() { + e.trace(trc); + } + } +} + unsafe impl JSTraceable for Cell { unsafe fn trace(&self, trc: *mut JSTracer) { self.get().trace(trc) diff --git a/components/script/timers.rs b/components/script/timers.rs index 54b2d3f2519..f3c09505ff9 100644 --- a/components/script/timers.rs +++ b/components/script/timers.rs @@ -350,7 +350,7 @@ pub enum TimerCallback { #[derive(JSTraceable, Clone)] enum InternalTimerCallback { StringTimerCallback(DOMString), - FunctionTimerCallback(Rc, Rc>>), + FunctionTimerCallback(Rc, Rc]>>), } impl HeapSizeOf for InternalTimerCallback { @@ -392,7 +392,7 @@ impl JsTimers { for (i, item) in arguments.iter().enumerate() { args.get_mut(i).unwrap().set(item.get()); } - InternalTimerCallback::FunctionTimerCallback(function, Rc::new(args)) + InternalTimerCallback::FunctionTimerCallback(function, Rc::new(args.into_boxed_slice())) } };