summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp b/src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp
index cd8fdbd00..8cbcc0d95 100644
--- a/src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp
+++ b/src/3rdparty/webkit/WebCore/platform/text/StringImpl.cpp
@@ -205,24 +205,26 @@ bool StringImpl::containsOnlyWhitespace()
return true;
}
-PassRefPtr<StringImpl> StringImpl::substring(unsigned pos, unsigned len)
+PassRefPtr<StringImpl> StringImpl::substring(unsigned start, unsigned length)
{
- if (pos >= m_length)
+ if (start >= m_length)
return empty();
- if (len > m_length - pos)
- len = m_length - pos;
- return create(m_data + pos, len);
+ unsigned maxLength = m_length - start;
+ if (length >= maxLength) {
+ if (!start)
+ return this;
+ length = maxLength;
+ }
+ return create(m_data + start, length);
}
-PassRefPtr<StringImpl> StringImpl::substringCopy(unsigned pos, unsigned len)
+PassRefPtr<StringImpl> StringImpl::substringCopy(unsigned start, unsigned length)
{
- if (pos >= m_length)
- pos = m_length;
- if (len > m_length - pos)
- len = m_length - pos;
- if (!len)
+ start = min(start, m_length);
+ length = min(length, m_length - start);
+ if (!length)
return adoptRef(new StringImpl);
- return substring(pos, len);
+ return create(m_data + start, length);
}
UChar32 StringImpl::characterStartingAt(unsigned i)