aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/create.rs
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/create.rs')
-rw-r--r--components/script/dom/create.rs14
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.