+ do { + ngen = arc4random_uniform(INT_MAX) + 1; + } while (DIP(ip, gen) == ngen);
arc4random_uniform contains a potential loop (approx 1 in 4billion) for uniform resolution, and this wraps it with another loop (approx 1 in 4billion). I'd really prefer to see a construct which doesn't do that. But I don't know if that would result in something really complex. > signed integer, it may overflow, causing undefined behavior The development of OpenBSD/univac is running way behind schedule.