Index: Source/core/css/parser/CSSPropertyParser.cpp |
diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp |
index e70d834aea288bd5d0871a543bff547ab6db5068..40769d3b6b5f666ef4b72c90b94146d527b0e442 100644 |
--- a/Source/core/css/parser/CSSPropertyParser.cpp |
+++ b/Source/core/css/parser/CSSPropertyParser.cpp |
@@ -335,12 +335,14 @@ inline PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::createCSSImageValueWi |
static inline bool isComma(CSSParserValue* value) |
{ |
- return value && value->unit == CSSParserValue::Operator && value->iValue == ','; |
+ ASSERT(value); |
+ return value->unit == CSSParserValue::Operator && value->iValue == ','; |
} |
static bool consumeComma(CSSParserValueList* valueList) |
{ |
- if (!isComma(valueList->current())) |
+ CSSParserValue* value = valueList->current(); |
+ if (!value || !isComma(value)) |
return false; |
valueList->next(); |
return true; |
@@ -1605,7 +1607,7 @@ bool CSSPropertyParser::parseFillShorthand(CSSPropertyID propId, const CSSProper |
while (m_valueList->current()) { |
CSSParserValue* val = m_valueList->current(); |
- if (val->unit == CSSParserValue::Operator && val->iValue == ',') { |
+ if (isComma(val)) { |
// We hit the end. Fill in all remaining values with the initial value. |
m_valueList->next(); |
for (i = 0; i < numProperties; ++i) { |
@@ -2533,7 +2535,7 @@ void CSSPropertyParser::parseFillPosition(CSSParserValueList* valueList, RefPtrW |
unsigned numberOfValues = 0; |
for (unsigned i = valueList->currentIndex(); i < valueList->size(); ++i, ++numberOfValues) { |
CSSParserValue* current = valueList->valueAt(i); |
- if (isComma(current) || !current || isForwardSlashOperator(current) || !isPotentialPositionValue(current)) |
+ if (!current || isComma(current) || isForwardSlashOperator(current) || !isPotentialPositionValue(current)) |
break; |
} |
@@ -2607,7 +2609,7 @@ void CSSPropertyParser::parse2ValuesFillPosition(CSSParserValueList* valueList, |
CSSParserValue* value = valueList->next(); |
// First check for the comma. If so, we are finished parsing this value or value pair. |
- if (isComma(value)) |
+ if (value && isComma(value)) |
value = 0; |
if (value) { |
@@ -4611,8 +4613,7 @@ PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseFontFamily() |
while (value) { |
CSSParserValue* nextValue = m_valueList->next(); |
- bool nextValBreaksFont = !nextValue || |
- (nextValue->unit == CSSParserValue::Operator && nextValue->iValue == ','); |
+ bool nextValBreaksFont = !nextValue || isComma(nextValue); |
bool nextValIsFontName = nextValue && |
((nextValue->id >= CSSValueSerif && nextValue->id <= CSSValueWebkitBody) || |
(nextValue->unit == CSSPrimitiveValue::CSS_STRING || nextValue->unit == CSSPrimitiveValue::CSS_IDENT)); |
@@ -8169,8 +8170,10 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseSVGStrokeDasharray() |
else if (value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ) |
ret->append(CSSPrimitiveValue::create(value->fValue, (CSSPrimitiveValue::UnitType) value->unit)); |
value = m_valueList->next(); |
- if (value && value->unit == CSSParserValue::Operator && value->iValue == ',') |
- value = m_valueList->next(); |
+ bool commaConsumed = consumeComma(m_valueList); |
+ value = m_valueList->current(); |
+ if (commaConsumed && !value) |
+ return nullptr; |
} |
if (!validPrimitive) |
return nullptr; |
@@ -8410,7 +8413,7 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(CSSPrope |
a = args->next(); |
if (!a) |
break; |
- if (a->unit != CSSParserValue::Operator || a->iValue != ',') |
+ if (!isComma(a)) |
return nullptr; |
a = args->next(); |