I recommend this construct for every for() loop in CircleMUD: for (toy = get_buffer_head(); toy; toy = toy->next) if (toy == toy->next) { log("SYSERR: BUF: do_buffer: Infinite loop!"); toy->next = NULL; } else if (!toy->used && toy->size == size && I once had an infinite loop in my character_list somehow because the next pointer pointed back to the character with the next pointer. Won't solve a problem with the last person being linked to the first person, but it will at least provide some safety from simple problems. This can of course be fooled by a next pointer that points to the previous entry but a) I'd have to allocate a pointer to hold the previous entry and b) you would almost have to be trying to do it. This might be the right track (not necessarily fix) for the char_to_room() twice problem. -- greerga@muohio.edu me@null.net | Genius may have its limitations, but stupidity http://www.muohio.edu/~greerga | is not thus handicapped. -- Elbert Hubbard +------------------------------------------------------------+ | 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/08/00 PST