Use a stack guard and a macro for RootedVec instead of return_address.

This commit is contained in:
Eduard Burtescu 2016-07-04 20:24:06 +03:00
parent 0db1faf876
commit b79a7d468e
8 changed files with 77 additions and 71 deletions

View file

@ -503,3 +503,18 @@ macro_rules! document_and_element_event_handlers(
event_handler!(paste, GetOnpaste, SetOnpaste);
)
);
#[macro_export]
macro_rules! rooted_vec {
(let mut $name:ident) => {
rooted_vec!(let mut $name <- ::std::iter::empty())
};
(let $name:ident <- $iter:expr) => {
let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
let $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter);
};
(let mut $name:ident <- $iter:expr) => {
let mut __root = $crate::dom::bindings::trace::RootableVec::new_unrooted();
let mut $name = $crate::dom::bindings::trace::RootedVec::new(&mut __root, $iter);
}
}