Index: third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp |
diff --git a/third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp b/third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp |
index 864a5ea1bea4505e7f64ae0c864ddfd265169f13..93dc74d1fd524d8679a618ded6c730ee9b4d45be 100644 |
--- a/third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp |
+++ b/third_party/WebKit/Source/core/css/parser/CSSParserToken.cpp |
@@ -147,6 +147,22 @@ CSSParserToken CSSParserToken::copyWithUpdatedString(const CSSParserString& pars |
return copy; |
} |
+bool CSSParserToken::valueDataCharRawEqual(const CSSParserToken& other) const |
+{ |
+ if (m_valueLength != other.m_valueLength) |
+ return false; |
+ |
+ if (m_valueIs8Bit) { |
+ return other.m_valueIs8Bit ? |
+ equal(static_cast<const LChar*>(m_valueDataCharRaw), static_cast<const LChar*>(other.m_valueDataCharRaw), m_valueLength) : |
+ equal(static_cast<const LChar*>(m_valueDataCharRaw), static_cast<const UChar*>(other.m_valueDataCharRaw), m_valueLength); |
+ } else { |
+ return other.m_valueIs8Bit ? |
+ equal(static_cast<const UChar*>(m_valueDataCharRaw), static_cast<const LChar*>(other.m_valueDataCharRaw), m_valueLength) : |
+ equal(static_cast<const UChar*>(m_valueDataCharRaw), static_cast<const UChar*>(other.m_valueDataCharRaw), m_valueLength); |
+ } |
+} |
+ |
bool CSSParserToken::operator==(const CSSParserToken& other) const |
{ |
if (m_type != other.m_type) |
@@ -162,9 +178,9 @@ bool CSSParserToken::operator==(const CSSParserToken& other) const |
case FunctionToken: |
case StringToken: |
case UrlToken: |
- return m_valueDataCharRaw == other.m_valueDataCharRaw && m_valueLength == other.m_valueLength && m_valueIs8Bit == other.m_valueIs8Bit; |
+ return valueDataCharRawEqual(other); |
case DimensionToken: |
- if (m_valueDataCharRaw != other.m_valueDataCharRaw || m_valueLength != other.m_valueLength || m_valueIs8Bit != other.m_valueIs8Bit) |
+ if (!valueDataCharRawEqual(other)) |
return false; |
// fallthrough |
case NumberToken: |