font shorthand with inherit keyword incorrectly parsed and rendered
[WebKit.git] / Source / WebCore / css / CSSParser.cpp
index a1258ff..ab76051 100644 (file)
@@ -4147,6 +4147,8 @@ bool CSSParser::parseFont(bool important)
     // Optional font-style, font-variant and font-weight.
     while (value) {
         int id = value->id;
+        if (id == CSSValueInitial || id == CSSValueInherit)
+            return false;
         if (id) {
             if (id == CSSValueNormal) {
                 // It's the initial value for all three, so mark the corresponding longhand as explicit.
@@ -4216,6 +4218,9 @@ bool CSSParser::parseFont(bool important)
     if (!value)
         return false;
 
+    if (value->id == CSSValueInitial || value->id == CSSValueInherit)
+        return false;
+
     // Set undefined values to default.
     if (!font->style)
         font->style = cssValuePool()->createIdentifierValue(CSSValueNormal);
@@ -4234,6 +4239,9 @@ bool CSSParser::parseFont(bool important)
     if (!font->size || !value)
         return false;
 
+    if (value->id == CSSValueInitial || value->id == CSSValueInherit)
+        return false;
+
     if (value->unit == CSSParserValue::Operator && value->iValue == '/') {
         // The line-height property.
         value = m_valueList->next();
@@ -4252,6 +4260,9 @@ bool CSSParser::parseFont(bool important)
             return false;
     }
 
+    if (value->id == CSSValueInitial || value->id == CSSValueInherit)
+        return false;
+
     if (!font->lineHeight)
         font->lineHeight = cssValuePool()->createIdentifierValue(CSSValueNormal);
 
@@ -4283,6 +4294,8 @@ PassRefPtr<CSSValueList> CSSParser::parseFontFamily()
 
     FontFamilyValue* currFamily = 0;
     while (value) {
+        if (value->id == CSSValueInitial || value->id == CSSValueInherit)
+            return 0;
         CSSParserValue* nextValue = m_valueList->next();
         bool nextValBreaksFont = !nextValue ||
                                  (nextValue->unit == CSSParserValue::Operator && nextValue->iValue == ',');