- while ((numitems > 0) && (listptrs[0] == 0L)) {
- memmove(&listptrs[0], &listptrs[1], (sizeof(long) * (numitems - 1)));
- --numitems;
+ while ((i < numitems) && (listptrs[i] == 0L)) i++;
+
+ if (i > 0)
+ {
+ memmove(&listptrs[0], &listptrs[i], (sizeof(long) * (numitems - i)));
+ numitems-=i;