From 53f5905381c01fa4f980b23980980efbdc815922 Mon Sep 17 00:00:00 2001 From: FranklinDM Date: Tue, 21 Feb 2023 19:54:31 +0800 Subject: [PATCH] Issue #2078 - Follow-up: Move isForgiving check to ParsePseudoClassWithSelectorListArg --- layout/style/nsCSSParser.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index ba97bbd3d7..78e9053cfd 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -780,8 +780,7 @@ protected: CSSPseudoClassType aType); nsSelectorParsingStatus ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector, - CSSPseudoClassType aType, - bool aIsForgiving); + CSSPseudoClassType aType); nsSelectorParsingStatus ParseNegatedSimpleSelector(int32_t& aDataMask, nsCSSSelector& aSelector); @@ -6166,11 +6165,8 @@ CSSParserImpl::ParsePseudoSelector(int32_t& aDataMask, else { MOZ_ASSERT(nsCSSPseudoClasses::HasSelectorListArg(pseudoClassType), "unexpected pseudo with function token"); - bool isForgiving = - nsCSSPseudoClasses::HasForgivingSelectorListArg(pseudoClassType); parsingStatus = ParsePseudoClassWithSelectorListArg(aSelector, - pseudoClassType, - isForgiving); + pseudoClassType); } if (eSelectorParsingStatus_Continue != parsingStatus) { if (eSelectorParsingStatus_Error == parsingStatus) { @@ -6544,11 +6540,13 @@ CSSParserImpl::ParsePseudoClassWithNthPairArg(nsCSSSelector& aSelector, // CSSParserImpl::nsSelectorParsingStatus CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector, - CSSPseudoClassType aType, - bool aIsForgiving) + CSSPseudoClassType aType) { + bool isForgiving = + nsCSSPseudoClasses::HasForgivingSelectorListArg(aType); + nsAutoPtr slist; - if (! ParseSelectorList(*getter_Transfers(slist), char16_t(')'), aIsForgiving)) { + if (! ParseSelectorList(*getter_Transfers(slist), char16_t(')'), isForgiving)) { return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')') } @@ -6560,13 +6558,13 @@ CSSParserImpl::ParsePseudoClassWithSelectorListArg(nsCSSSelector& aSelector, for (nsCSSSelectorList *l = slist; l; l = l->mNext) { nsCSSSelector *s = l->mSelectors; if (s == nullptr) { - MOZ_ASSERT(aIsForgiving, + MOZ_ASSERT(isForgiving, "unexpected empty selector in unforgiving selector list"); break; } // Check that none of the selectors in the list have combinators or // pseudo-elements. - if ((!aIsForgiving && s->mNext) || s->IsPseudoElement()) { + if ((!isForgiving && s->mNext) || s->IsPseudoElement()) { return eSelectorParsingStatus_Error; // our caller calls SkipUntil(')') } }