Changed _bytesio.c to avoid comparing a signed with an unsigned value.
Added tests for overflow checks.
diff --git a/Modules/_bytesio.c b/Modules/_bytesio.c
index 00cb06b..9920aaa 100644
--- a/Modules/_bytesio.c
+++ b/Modules/_bytesio.c
@@ -110,16 +110,8 @@
assert(self->pos >= 0);
assert(len >= 0);
- /* This overflow check is not strictly necessary. However, it avoids us to
- deal with funky things like comparing an unsigned and a signed
- integer. */
- if (self->pos > PY_SSIZE_T_MAX - len) {
- PyErr_SetString(PyExc_OverflowError,
- "new position too large");
- return -1;
- }
- if (self->pos + len > self->buf_size) {
- if (resize_buffer(self, self->pos + len) < 0)
+ if ((size_t)self->pos + len > self->buf_size) {
+ if (resize_buffer(self, (size_t)self->pos + len) < 0)
return -1;
}