| Index: Source/core/css/CSSCalculationValue.cpp
|
| diff --git a/Source/core/css/CSSCalculationValue.cpp b/Source/core/css/CSSCalculationValue.cpp
|
| index 07ed153f10117da48d578ea5662e424fa7a2ca6e..08ddc91b01d465fb94e149ffcf4db0c41969e4c7 100644
|
| --- a/Source/core/css/CSSCalculationValue.cpp
|
| +++ b/Source/core/css/CSSCalculationValue.cpp
|
| @@ -644,18 +644,18 @@ private:
|
| bool parseValue(CSSParserValueList* tokens, unsigned* index, Value* result)
|
| {
|
| CSSParserValue* parserValue = tokens->valueAt(*index);
|
| - if (parserValue->unit == CSSParserValue::Operator)
|
| + if (parserValue->unit >= CSSParserValue::Operator)
|
| return false;
|
|
|
| - RefPtrWillBeRawPtr<CSSValue> value = parserValue->createCSSValue();
|
| - if (!value || !value->isPrimitiveValue())
|
| + CSSPrimitiveValue::UnitType type = static_cast<CSSPrimitiveValue::UnitType>(parserValue->unit);
|
| + if (unitCategory(type) == CalcOther)
|
| return false;
|
|
|
| - CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value.get());
|
| - if (unitCategory(primitiveValue->primitiveType()) == CalcOther)
|
| - return false;
|
| + if (type == CSSPrimitiveValue::CSS_NUMBER && parserValue->isInt)
|
| + type = CSSPrimitiveValue::CSS_PARSER_INTEGER;
|
|
|
| - result->value = CSSCalcPrimitiveValue::create(primitiveValue, parserValue->isInt);
|
| + result->value = CSSCalcPrimitiveValue::create(
|
| + CSSPrimitiveValue::create(parserValue->fValue, type), parserValue->isInt);
|
|
|
| ++*index;
|
| return true;
|
|
|