isize+1 is not equal to zero and will be always greater than isize, so
check can be eliminated.
That's not always true. For instance in int8 space, 5*51+1 == 0, but 5*51 == -1. I think the size==2 case is safe, but probably most sizes (including 5) aren't. The numbers are larger for int32 and int64 but the same situation happens.