diff --git a/components/style/gecko/snapshot_helpers.rs b/components/style/gecko/snapshot_helpers.rs index f34fca40f1c..8d99f84a958 100644 --- a/components/style/gecko/snapshot_helpers.rs +++ b/components/style/gecko/snapshot_helpers.rs @@ -43,14 +43,16 @@ unsafe fn get_class_or_part_from_attr(attr: &structs::nsAttrValue) -> Class { (*container).mType, structs::nsAttrValue_ValueType_eAtomArray ); - let array = (*container) + // NOTE: Bindgen doesn't deal with AutoTArray, so cast it below. + let array: *mut u8 = *(*container) .__bindgen_anon_1 .mValue .as_ref() .__bindgen_anon_1 .mAtomArray .as_ref(); - return Class::More(&***array) + let array = array as *const structs::nsTArray>; + return Class::More(&**array) } debug_assert_eq!(base_type, structs::nsAttrValue_ValueBaseType_eStringBase); Class::None @@ -132,7 +134,8 @@ pub fn has_class_or_part( Class::One(atom) => unsafe { case_sensitivity.eq_atom(name, WeakAtom::new(atom)) }, Class::More(atoms) => match case_sensitivity { CaseSensitivity::CaseSensitive => { - atoms.iter().any(|atom| atom.mRawPtr == name.as_ptr()) + let name_ptr = name.as_ptr(); + atoms.iter().any(|atom| atom.mRawPtr == name_ptr) }, CaseSensitivity::AsciiCaseInsensitive => unsafe { atoms