diff options
author | Josh Matthews <josh@joshmatthews.net> | 2017-01-19 13:46:43 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2017-01-20 11:32:19 -0500 |
commit | e5eaab35234b45609b2eca2f33b07bede7627edc (patch) | |
tree | 0c2a35df55dfbe23e55f2146a2dbb5fd3333aed2 /components/script/dom/promise.rs | |
parent | be3f35878af1d9210abc65358c99782c119ceaa6 (diff) | |
download | servo-e5eaab35234b45609b2eca2f33b07bede7627edc.tar.gz servo-e5eaab35234b45609b2eca2f33b07bede7627edc.zip |
Use Heap in DOM object reflector implementation to ensure GC barriers are used.
Diffstat (limited to 'components/script/dom/promise.rs')
-rw-r--r-- | components/script/dom/promise.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/components/script/dom/promise.rs b/components/script/dom/promise.rs index 89bbd088f2c..a727e5049f5 100644 --- a/components/script/dom/promise.rs +++ b/components/script/dom/promise.rs @@ -90,12 +90,12 @@ impl Promise { #[allow(unsafe_code, unrooted_must_root)] unsafe fn new_with_js_promise(obj: HandleObject, cx: *mut JSContext) -> Rc<Promise> { assert!(IsPromiseObject(obj)); - let mut promise = Promise { + let promise = Promise { reflector: Reflector::new(), permanent_js_root: MutHeapJSVal::new(), }; - promise.init_reflector(obj.get()); - let promise = Rc::new(promise); + let mut promise = Rc::new(promise); + Rc::get_mut(&mut promise).unwrap().init_reflector(obj.get()); promise.initialize(cx); promise } |