diff options
Diffstat (limited to 'components/script/dom/create.rs')
-rw-r--r-- | components/script/dom/create.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 4f8d3b9f846..8bbbdc9c832 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -79,19 +79,25 @@ use servo_util::str::DOMString; use string_cache::QualName; +use std::borrow::ToOwned; + pub fn create_element(name: QualName, prefix: Option<DOMString>, document: JSRef<Document>, creator: ElementCreator) -> Temporary<Element> { if name.ns != ns!(HTML) { - return Element::new(name.local.as_slice().into_string(), name.ns, prefix, document); + return Element::new(name.local.as_slice().to_owned(), name.ns, prefix, document); } macro_rules! make( - ($ctor:ident $(, $arg:expr)*) => ({ - let obj = $ctor::new(name.local.as_slice().into_string(), prefix, document $(, $arg)*); + ($ctor:ident) => ({ + let obj = $ctor::new(name.local.as_slice().to_owned(), prefix, document); + ElementCast::from_temporary(obj) + }); + ($ctor:ident, $($arg:expr),+) => ({ + let obj = $ctor::new(name.local.as_slice().to_owned(), prefix, document, $($arg),+); ElementCast::from_temporary(obj) }) - ) + ); // This is a big match, and the IDs for inline-interned atoms are not very structured. // Perhaps we should build a perfect hash from those IDs instead. |