Skip to content
Permalink
Browse files

Defend against bugs in SelectorFlagsMap

* Make `SelectorFlagsMap::apply_flags` private so it's easier to ensure
  it is called from the correct thread.

* Clear the cache and the map at the same time; otherwise it leaves
  `SelectorFlagsMap` in an inconsistent state.
  • Loading branch information
mbrubeck committed Dec 8, 2017
1 parent 1f22041 commit 3e34c0295e1289df92f0813cd174cc0f878af978
Showing with 2 additions and 1 deletion.
  1. +2 −1 components/style/context.rs
@@ -553,8 +553,9 @@ impl<E: TElement> SelectorFlagsMap<E> {
}

/// Applies the flags. Must be called on the main thread.
pub fn apply_flags(&mut self) {
fn apply_flags(&mut self) {
debug_assert!(thread_state::get() == ThreadState::LAYOUT);
self.cache.evict_all();
for (el, flags) in self.map.drain() {
unsafe { el.set_selector_flags(flags); }
}

0 comments on commit 3e34c02

Please sign in to comment.
You can’t perform that action at this time.