Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
When checking for integer overflow, you may often write tests like `p + i < p`. This works fine if `p` and `i` are unsigned integers, since any overflow in the addition will cause the value to simply "wrap around." However, using this pattern when `p` is a pointer is problematic because pointer overflow has undefined behavior according to the C and C++ standards. If the addition overflows and has an undefined result, the comparison will likewise be undefined; it may produce an unintended result, or may be deleted entirely by an optimizing compiler. In this case the overflow check is not necessary, as a `realloc()` was used for reallocate the pointer. In case of an overflow, `realloc()` returns a new pointer location, which is already used here.
- Loading branch information