#include void * a[255]; f (m) { int i; int sh = 0x100; i = m; do { a[sh >>= 1] = ((unsigned)i << 3) + (char*)a; i += 4; } while (i < INT_MAX/2 + 1 + 4 * 4); } main () { a[0x10] = 0; a[0x08] = 0; f (INT_MAX/2 + INT_MAX/4 + 2); if (a[0x10] || a[0x08]) abort (); a[0x10] = 0; a[0x08] = 0; f (INT_MAX/2 + 1); if (! a[0x10] || a[0x08]) abort (); exit (0); }