From 5c66290142608b94b32d742a0645dff76f47d3a1 Mon Sep 17 00:00:00 2001 From: Jonathan Kew Date: Tue, 18 Sep 2018 09:34:21 +0100 Subject: [PATCH] style: Use nsAtom instead of nsString for FontFamilyName. Bug: 1490997 Reviewed-by: lsalzman --- components/style/values/computed/font.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/components/style/values/computed/font.rs b/components/style/values/computed/font.rs index 2c3d2853e5c..4cb8f7a7bdf 100644 --- a/components/style/values/computed/font.rs +++ b/components/style/values/computed/font.rs @@ -483,16 +483,19 @@ impl SingleFontFamily { FontFamilyType::eFamily_fantasy => SingleFontFamily::Generic(atom!("fantasy")), FontFamilyType::eFamily_moz_fixed => SingleFontFamily::Generic(atom!("-moz-fixed")), FontFamilyType::eFamily_named => { - let name = Atom::from(&*family.mName); + let name = unsafe { Atom::from_raw(family.mName.mRawPtr) }; SingleFontFamily::FamilyName(FamilyName { name, syntax: FamilyNameSyntax::Identifiers, }) }, - FontFamilyType::eFamily_named_quoted => SingleFontFamily::FamilyName(FamilyName { - name: (&*family.mName).into(), - syntax: FamilyNameSyntax::Quoted, - }), + FontFamilyType::eFamily_named_quoted => { + let name = unsafe { Atom::from_raw(family.mName.mRawPtr) }; + SingleFontFamily::FamilyName(FamilyName { + name, + syntax: FamilyNameSyntax::Quoted, + }) + }, _ => panic!("Found unexpected font FontFamilyType"), } } @@ -538,9 +541,15 @@ impl Hash for FontFamilyList { where H: Hasher, { + use string_cache::WeakAtom; + for name in self.0.mNames.iter() { name.mType.hash(state); - name.mName.hash(state); + if !name.mName.mRawPtr.is_null() { + unsafe { + WeakAtom::new(name.mName.mRawPtr).hash(state); + } + } } } } @@ -552,7 +561,7 @@ impl PartialEq for FontFamilyList { return false; } for (a, b) in self.0.mNames.iter().zip(other.0.mNames.iter()) { - if a.mType != b.mType || &*a.mName != &*b.mName { + if a.mType != b.mType || a.mName.mRawPtr != b.mName.mRawPtr { return false; } }