Index: src/core/SkString.cpp |
diff --git a/src/core/SkString.cpp b/src/core/SkString.cpp |
index ba1da4136893dffcbc5e1ac8252d9e3a4118a977..1e29dc71723bdb803e5d2d9cd7c9ac68be3fe55d 100644 |
--- a/src/core/SkString.cpp |
+++ b/src/core/SkString.cpp |
@@ -589,24 +589,22 @@ void SkString::remove(size_t offset, size_t length) { |
size_t size = this->size(); |
if (offset < size) { |
- if (offset + length > size) { |
+ if (length > size - offset) { |
length = size - offset; |
} |
+ SkASSERT(length <= size); |
+ SkASSERT(offset <= size - length); |
if (length > 0) { |
- SkASSERT(size > length); |
SkString tmp(size - length); |
char* dst = tmp.writable_str(); |
const char* src = this->c_str(); |
if (offset) { |
- SkASSERT(offset <= tmp.size()); |
memcpy(dst, src, offset); |
} |
- size_t tail = size - offset - length; |
- SkASSERT((int32_t)tail >= 0); |
+ size_t tail = size - (offset + length); |
if (tail) { |
- // SkASSERT(offset + length <= tmp.size()); |
- memcpy(dst + offset, src + offset + length, tail); |
+ memcpy(dst + offset, src + (offset + length), tail); |
} |
SkASSERT(dst[tmp.size()] == 0); |
this->swap(tmp); |