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 I removed the pointer overflow check completely and replaced it with a check of the actual pointer size, as everything outside would be a segmentation fault anyway.
- Loading branch information