Avoid signed integer overflow by making an addition a subtraction
The task has a very good explanation. The use-case was ba.remove(n, INT_MAX); since you can't pass -1 to the length, and that results in overflow when you add n+INT_MAX. Task-number: QTBUG-34694 Change-Id: I365eb86b2d0dabbe0bde67e4e7f33d64fd5793af Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
This commit is contained in:
parent
f767d3a1b2
commit
315ba388f3
@ -1854,7 +1854,7 @@ QByteArray &QByteArray::remove(int pos, int len)
|
||||
if (len <= 0 || uint(pos) >= uint(d->size))
|
||||
return *this;
|
||||
detach();
|
||||
if (pos + len >= d->size) {
|
||||
if (len >= d->size - pos) {
|
||||
resize(pos);
|
||||
} else {
|
||||
memmove(d->data() + pos, d->data() + pos + len, d->size - pos - len);
|
||||
|
Loading…
Reference in New Issue
Block a user