From 439bc78cabe2ef23748000b1eb9f345c9206524e Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Thu, 10 Jul 2014 16:40:41 +0200 Subject: Return a Temporary from *Binding::Wrap. Returning a JS is GC-unsafe. This commit also includes some cleanup around Node and Document reflection. --- src/components/script/dom/bindings/codegen/CodegenRust.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py') diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 17001fd734a..3b35999cb65 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1792,7 +1792,7 @@ class CGWrapMethod(CGAbstractMethod): else: args = [Argument('*mut JSContext', 'aCx'), Argument("Box<%s>" % descriptor.concreteType, 'aObject', mutable=True)] - retval = 'JS<%s>' % descriptor.concreteType + retval = 'Temporary<%s>' % descriptor.concreteType CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args, pub=True) def definition_body(self): @@ -1809,7 +1809,7 @@ assert!(proto.is_not_null()); raw.reflector().set_jsobject(obj); -return raw;""" % CreateBindingJSObject(self.descriptor, "scope")) +Temporary::new(raw)""" % CreateBindingJSObject(self.descriptor, "scope")) else: return CGGeneric("""\ %s @@ -1818,7 +1818,8 @@ with_compartment(aCx, obj, || { JS_SetPrototype(aCx, obj, proto); }); raw.reflector().set_jsobject(obj); -return raw;""" % CreateBindingJSObject(self.descriptor)) + +Temporary::new(raw)""" % CreateBindingJSObject(self.descriptor)) class CGIDLInterface(CGThing): -- cgit v1.2.3