servo: Merge #7943 - Clarify some code in do_create_interface_objects (from pierrechevalier83:fix_issue_7941); r=Ms2ger

rval.get() is believed to be always null upon entering this function.
This assumption is verified by the added assertion.
It makes more sense to move the block of code that was moved inside
the if statement which is the only place where it can be initialized.

Fixes #7941.

Source-Repo: https://github.com/servo/servo
Source-Revision: 6111cf9ffcb4427ab9a0966b9a4d0387b3101e7b
This commit is contained in:
Pierre Chevalier 2015-10-19 09:37:03 -06:00
Родитель 4ed7dd44e3
Коммит cfc0603fb6
1 изменённых файлов: 10 добавлений и 9 удалений

Просмотреть файл

@ -222,20 +222,21 @@ pub fn do_create_interface_objects(cx: *mut JSContext,
dom_class: Option<&'static DOMClass>,
members: &'static NativeProperties,
rval: MutableHandleObject) {
assert!(rval.get().is_null());
if let Some(proto_class) = proto_class {
create_interface_prototype_object(cx, proto_proto,
proto_class, members, rval);
}
if !rval.get().is_null() {
let dom_class_ptr = match dom_class {
Some(dom_class) => dom_class as *const DOMClass as *const libc::c_void,
None => ptr::null() as *const libc::c_void,
};
if !rval.get().is_null() {
let dom_class_ptr = match dom_class {
Some(dom_class) => dom_class as *const DOMClass as *const libc::c_void,
None => ptr::null() as *const libc::c_void,
};
unsafe {
JS_SetReservedSlot(rval.get(), DOM_PROTO_INSTANCE_CLASS_SLOT,
PrivateValue(dom_class_ptr));
unsafe {
JS_SetReservedSlot(rval.get(), DOM_PROTO_INSTANCE_CLASS_SLOT,
PrivateValue(dom_class_ptr));
}
}
}