perhaps instead of "c + len > c" being the test of pointer wraparound, one may use the following (if there is a desire to use pointer-based arithmetic)... #define MAXPTR (char *)0xffffffff // this would differ on 64 bit systems if (MAXPTR - c < len) { // we have a pointer wraparound... }