Index: Source/core/css/RuleFeature.cpp |
diff --git a/Source/core/css/RuleFeature.cpp b/Source/core/css/RuleFeature.cpp |
index 0d8cdffee98749c87216d7ebdc30b7e959a2cc89..43425064d661d16029fe93ad92047df16e67ffba 100644 |
--- a/Source/core/css/RuleFeature.cpp |
+++ b/Source/core/css/RuleFeature.cpp |
@@ -109,13 +109,16 @@ bool RuleFeatureSet::updateClassInvalidationSets(const CSSSelector& selector) |
AtomicString id; |
AtomicString tagName; |
- const CSSSelector* lastSelector = &selector; |
- for (; lastSelector->relation() == CSSSelector::SubSelector; lastSelector = lastSelector->tagHistory()) { |
- extractClassIdOrTag(*lastSelector, classes, id, tagName); |
- } |
- extractClassIdOrTag(*lastSelector, classes, id, tagName); |
- |
- for (const CSSSelector* current = &selector ; current; current = current->tagHistory()) { |
+ bool rightmostCompoundSelector = true; |
+ for (const CSSSelector* current = &selector; current; current = current->tagHistory()) { |
+ if (rightmostCompoundSelector) { |
+ extractClassIdOrTag(*current, classes, id, tagName); |
+ if (current->m_match == CSSSelector::Class) |
+ ensureClassInvalidationSet(current->value()); |
+ if (current->relation() != CSSSelector::SubSelector) |
+ rightmostCompoundSelector = false; |
+ continue; |
esprehn
2014/02/21 04:33:46
I think you want to do this as two loops like befo
rune
2014/02/21 10:17:17
Done that now. I did a break on !SubSelector inste
|
+ } |
if (current->m_match == CSSSelector::Class) { |
DescendantInvalidationSet& invalidationSet = ensureClassInvalidationSet(current->value()); |
if (!id.isEmpty()) |