Title: [131566] branches/chromium/1229/Source/WebCore/css/CSSParser.cpp
Revision
131566
Author
[email protected]
Date
2012-10-17 01:18:17 -0700 (Wed, 17 Oct 2012)

Log Message

Merge 130883 - Web Inspector: Semantically incorrect CSS rules result in broken source code data
https://bugs.webkit.org/show_bug.cgi?id=98520

Reviewed by Vsevolod Vlasov.

Source/WebCore:

Pop and throw away rule data from the stack when data have been collected for a semantically invalid CSS rule
(which is not going to be created).

* css/CSSParser.cpp:
(WebCore::CSSParser::createImportRule):
(WebCore::CSSParser::createFontFaceRule):
(WebCore::CSSParser::createPageRule):
(WebCore::CSSParser::createRegionRule):

[email protected]
Review URL: https://codereview.chromium.org/11183028

Modified Paths

Diff

Modified: branches/chromium/1229/Source/WebCore/css/CSSParser.cpp (131565 => 131566)


--- branches/chromium/1229/Source/WebCore/css/CSSParser.cpp	2012-10-17 08:18:07 UTC (rev 131565)
+++ branches/chromium/1229/Source/WebCore/css/CSSParser.cpp	2012-10-17 08:18:17 UTC (rev 131566)
@@ -9566,8 +9566,10 @@
 
 StyleRuleBase* CSSParser::createImportRule(const CSSParserString& url, MediaQuerySet* media)
 {
-    if (!media || !m_allowImportRules)
+    if (!media || !m_allowImportRules) {
+        popRuleData();
         return 0;
+    }
     RefPtr<StyleRuleImport> rule = StyleRuleImport::create(url, media);
     StyleRuleImport* result = rule.get();
     m_parsedRules.append(rule.release());
@@ -9679,6 +9681,7 @@
             // have 'initial' value and cannot 'inherit' from parent.
             // See http://dev.w3.org/csswg/css3-fonts/#font-family-desc
             clearProperties();
+            popRuleData();
             return 0;
         }
     }
@@ -9768,7 +9771,8 @@
         pageRule = rule.get();
         m_parsedRules.append(rule.release());
         processAndAddNewRuleToSourceTreeIfNeeded();
-    }
+    } else
+        popRuleData();
     clearProperties();
     return pageRule;
 }
@@ -9781,8 +9785,10 @@
 
 StyleRuleBase* CSSParser::createRegionRule(Vector<OwnPtr<CSSParserSelector> >* regionSelector, RuleList* rules)
 {
-    if (!cssRegionsEnabled() || !regionSelector || !rules)
+    if (!cssRegionsEnabled() || !regionSelector || !rules) {
+        popRuleData();
         return 0;
+    }
 
     m_allowImportRules = m_allowNamespaceDeclarations = false;
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to