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))
|
if (len <= 0 || uint(pos) >= uint(d->size))
|
||||||
return *this;
|
return *this;
|
||||||
detach();
|
detach();
|
||||||
if (pos + len >= d->size) {
|
if (len >= d->size - pos) {
|
||||||
resize(pos);
|
resize(pos);
|
||||||
} else {
|
} else {
|
||||||
memmove(d->data() + pos, d->data() + pos + len, d->size - pos - len);
|
memmove(d->data() + pos, d->data() + pos + len, d->size - pos - len);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user