| Index: third_party/WebKit/Source/core/svg/SVGNumberList.cpp
|
| diff --git a/third_party/WebKit/Source/core/svg/SVGNumberList.cpp b/third_party/WebKit/Source/core/svg/SVGNumberList.cpp
|
| index a701cef5eb0227dc1674a0124c5b02a71f8ee2db..4e09da42076e5eaf8d0f47af7bbab0e99f359360 100644
|
| --- a/third_party/WebKit/Source/core/svg/SVGNumberList.cpp
|
| +++ b/third_party/WebKit/Source/core/svg/SVGNumberList.cpp
|
| @@ -55,44 +55,36 @@ String SVGNumberList::valueAsString() const
|
| }
|
|
|
| template <typename CharType>
|
| -bool SVGNumberList::parse(const CharType*& ptr, const CharType* end)
|
| +SVGParsingError SVGNumberList::parse(const CharType*& ptr, const CharType* end)
|
| {
|
| - clear();
|
| -
|
| + const CharType* listStart = ptr;
|
| while (ptr < end) {
|
| float number = 0;
|
| if (!parseNumber(ptr, end, number))
|
| - return false;
|
| + return SVGParsingError(SVGParseStatus::ExpectedNumber, ptr - listStart);
|
| append(SVGNumber::create(number));
|
| }
|
| -
|
| - return true;
|
| + return SVGParseStatus::NoError;
|
| }
|
|
|
| SVGParsingError SVGNumberList::setValueAsString(const String& value)
|
| {
|
| - if (value.isEmpty()) {
|
| - clear();
|
| + clear();
|
| +
|
| + if (value.isEmpty())
|
| return SVGParseStatus::NoError;
|
| - }
|
|
|
| - bool valid = false;
|
| + // Don't call |clear()| if an error is encountered. SVG policy is to use
|
| + // valid items before error.
|
| + // Spec: http://www.w3.org/TR/SVG/single-page.html#implnote-ErrorProcessing
|
| if (value.is8Bit()) {
|
| const LChar* ptr = value.characters8();
|
| const LChar* end = ptr + value.length();
|
| - valid = parse(ptr, end);
|
| - } else {
|
| - const UChar* ptr = value.characters16();
|
| - const UChar* end = ptr + value.length();
|
| - valid = parse(ptr, end);
|
| + return parse(ptr, end);
|
| }
|
| -
|
| - if (!valid) {
|
| - // No call to |clear()| here. SVG policy is to use valid items before error.
|
| - // Spec: http://www.w3.org/TR/SVG/single-page.html#implnote-ErrorProcessing
|
| - return SVGParseStatus::ParsingFailed;
|
| - }
|
| - return SVGParseStatus::NoError;
|
| + const UChar* ptr = value.characters16();
|
| + const UChar* end = ptr + value.length();
|
| + return parse(ptr, end);
|
| }
|
|
|
| void SVGNumberList::add(PassRefPtrWillBeRawPtr<SVGPropertyBase> other, SVGElement* contextElement)
|
|
|