Fix string assert and dead code which caused it.

Running tools with a '--' parameter caused SkString to assert here
incorrectly. SkString::remove should allow the entire contents of a
string to be removed.

The code in the flags parser which caused this call is dead and should
be removed.

R=mtklein@google.com, reed@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/453333002
This commit is contained in:
bungeman 2014-08-11 07:19:56 -07:00 committed by Commit bot
parent 872e3dc89d
commit dfb9bc41a2
2 changed files with 5 additions and 11 deletions

View File

@ -589,24 +589,22 @@ void SkString::remove(size_t offset, size_t length) {
size_t size = this->size(); size_t size = this->size();
if (offset < size) { if (offset < size) {
if (offset + length > size) { if (length > size - offset) {
length = size - offset; length = size - offset;
} }
SkASSERT(length <= size);
SkASSERT(offset <= size - length);
if (length > 0) { if (length > 0) {
SkASSERT(size > length);
SkString tmp(size - length); SkString tmp(size - length);
char* dst = tmp.writable_str(); char* dst = tmp.writable_str();
const char* src = this->c_str(); const char* src = this->c_str();
if (offset) { if (offset) {
SkASSERT(offset <= tmp.size());
memcpy(dst, src, offset); memcpy(dst, src, offset);
} }
size_t tail = size - offset - length; size_t tail = size - (offset + length);
SkASSERT((int32_t)tail >= 0);
if (tail) { 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); SkASSERT(dst[tmp.size()] == 0);
this->swap(tmp); this->swap(tmp);

View File

@ -287,10 +287,6 @@ void SkCommandLineFlags::Parse(int argc, char** argv) {
flag = flag->next(); flag = flag->next();
} }
if (!flagMatched) { if (!flagMatched) {
SkString stripped(argv[i]);
while (stripped.startsWith('-')) {
stripped.remove(0, 1);
}
if (!FLAGS_undefok) { if (!FLAGS_undefok) {
SkDebugf("Got unknown flag \"%s\". Exiting.\n", argv[i]); SkDebugf("Got unknown flag \"%s\". Exiting.\n", argv[i]);
exit(-1); exit(-1);