On Mon, 20 Apr 1998, Mark Gerritsen wrote:
> for (j = list; j; j = j->next) {
> if (j->field == 0)
> REMOVE_FROM_LIST(j, list, next);
> }
Gotta use a temp variable. Like so:
for (j = list; j; j = next_in_list) {
next_in_list = j->next;
if (j->field == 0) {
REMOVE_FROM_LIST(j, list, next);
}
}
That way when j gets trashed from the list, the loop will remain intact
because the next_in_list variable carries the next item in the list. You
need to define next_in_list the same way you did j.
John Evans <evansj@hi-line.net> -- http://www.hi-line.net/~evansj/
Any sufficiently advanced technology is indistinguishable from magic.
-- Arthur C. Clarke
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST