This was an ANSI C compliance bug, but g++ stumbled upon it as well, like non-gcc C compilers would do.
2006-11-05 Bruno Haible <[EMAIL PROTECTED]> * lib/gl_array_list.c (gl_array_iterator_next): Make pointer decrement ANSI C compliant. *** gnulib-20061026/lib/gl_array_list.c 2006-11-04 02:35:33.000000000 +0100 --- gnulib-20061026-modified/lib/gl_array_list.c 2006-11-05 12:55:44.000000000 +0100 *************** *** 439,446 **** abort (); /* The last returned element was removed. */ iterator->count--; ! iterator->p--; ! iterator->q--; } if (iterator->p < iterator->q) { --- 439,446 ---- abort (); /* The last returned element was removed. */ iterator->count--; ! iterator->p = (const void **) iterator->p - 1; ! iterator->q = (const void **) iterator->q - 1; } if (iterator->p < iterator->q) {