diff --git a/components/layout/css/matching.rs b/components/layout/css/matching.rs index 503897a5964..b84b04e167c 100644 --- a/components/layout/css/matching.rs +++ b/components/layout/css/matching.rs @@ -20,6 +20,7 @@ use selectors::bloom::BloomFilter; use selectors::matching::{CommonStyleAffectingAttributeMode, CommonStyleAffectingAttributes}; use selectors::matching::{common_style_affecting_attributes, rare_style_affecting_attributes}; use selectors::parser::PseudoElement; +use selectors::smallvec::VecLike; use std::borrow::ToOwned; use std::hash::{Hash, Hasher}; use std::mem; @@ -289,9 +290,29 @@ impl StyleSharingCandidate { return false } - let mut matching_rules = vec![]; + struct RulesSink { + empty: bool, + } + impl VecLike for RulesSink { + #[inline] + fn vec_len(&self) -> usize { + unreachable!() + } + + #[inline] + fn vec_push(&mut self, _value: T) { + self.empty = false; + } + + #[inline] + fn vec_slice_mut<'a>(&'a mut self, _start: usize, _end: usize) + -> &'a mut [T] { + unreachable!() + } + } + let mut matching_rules = RulesSink { empty: true }; element.synthesize_presentational_hints_for_legacy_attributes(&mut matching_rules); - if !matching_rules.is_empty() { + if !matching_rules.empty { return false; }