aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings
diff options
context:
space:
mode:
authorTetsuharu OHZEKI <saneyuki.snyk@gmail.com>2013-11-09 03:55:30 +0900
committerTetsuharu OHZEKI <saneyuki.snyk@gmail.com>2013-11-14 20:35:36 +0900
commitf5ef4365f46d31cb4aa85474345a5d2c20e86590 (patch)
treee4ac7016de573cfc179e1121d93eb384b3ef2fd7 /src/components/script/dom/bindings
parentb1762655e6ce7e9ff8a79710a5b10bef34a3c26b (diff)
downloadservo-f5ef4365f46d31cb4aa85474345a5d2c20e86590.tar.gz
servo-f5ef4365f46d31cb4aa85474345a5d2c20e86590.zip
Stop passing DOMStrings via borrowed pointer. (#1201)
Diffstat (limited to 'src/components/script/dom/bindings')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py8
-rw-r--r--src/components/script/dom/bindings/utils.rs10
2 files changed, 8 insertions, 10 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index 05255b95792..bb87667df83 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -1584,9 +1584,9 @@ for (uint32_t i = 0; i < length; ++i) {
if type.isString():
if type.nullable():
- return (wrapAndSetPtr("*${jsvalPtr} = domstring_to_jsval(cx, &%s)" % result), False)
+ return (wrapAndSetPtr("*${jsvalPtr} = domstring_to_jsval(cx, %s)" % result), False)
else:
- return (wrapAndSetPtr("*${jsvalPtr} = str_to_jsval(cx, &%s)" % result), False)
+ return (wrapAndSetPtr("*${jsvalPtr} = str_to_jsval(cx, %s)" % result), False)
if type.isEnum():
if type.nullable():
@@ -2961,9 +2961,7 @@ class CGCallGenerator(CGThing):
if a.type.isObject() and not a.type.nullable() and not a.optional:
name = "(JSObject&)" + name
#XXXjdm Perhaps we should pass all nontrivial types by borrowed pointer
- # Aoid passing Option<Option<DOMString>> by reference. If only one of optional or
- # defaultValue are truthy we pass an Option, otherwise it's a concrete Option<DOMString>.
- if a.type.isDictionary() or (a.type.isString() and not (bool(a.defaultValue) ^ a.optional)):
+ if a.type.isDictionary():
name = "&" + name
args.append(CGGeneric(name))
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs
index f3f24b34cc9..f79e8ae633a 100644
--- a/src/components/script/dom/bindings/utils.rs
+++ b/src/components/script/dom/bindings/utils.rs
@@ -111,7 +111,7 @@ extern fn InterfaceObjectToString(cx: *JSContext, _argc: c_uint, vp: *mut JSVal)
assert!(jsval::is_string(v));
let name = jsstring_to_str(cx, jsval::to_string(v));
let retval = Some(~"function " + name + "() {\n [native code]\n}");
- *vp = domstring_to_jsval(cx, &retval);
+ *vp = domstring_to_jsval(cx, retval);
return 1;
}
}
@@ -273,7 +273,7 @@ pub fn jsval_to_domstring(cx: *JSContext, v: JSVal) -> Result<Option<DOMString>,
}
#[fixed_stack_segment]
-pub unsafe fn str_to_jsval(cx: *JSContext, string: &DOMString) -> JSVal {
+pub unsafe fn str_to_jsval(cx: *JSContext, string: DOMString) -> JSVal {
do string.to_utf16().as_imm_buf |buf, len| {
let jsstr = JS_NewUCStringCopyN(cx, buf, len as libc::size_t);
if jsstr.is_null() {
@@ -286,10 +286,10 @@ pub unsafe fn str_to_jsval(cx: *JSContext, string: &DOMString) -> JSVal {
}
#[fixed_stack_segment]
-pub unsafe fn domstring_to_jsval(cx: *JSContext, string: &Option<DOMString>) -> JSVal {
+pub unsafe fn domstring_to_jsval(cx: *JSContext, string: Option<DOMString>) -> JSVal {
match string {
- &None => JSVAL_NULL,
- &Some(ref s) => str_to_jsval(cx, s),
+ None => JSVAL_NULL,
+ Some(s) => str_to_jsval(cx, s),
}
}