On Thu, 24 Oct 2002, David Cole wrote: > for (smd = ch->MemList; smd; smd = smd->next) { // Here > if (smd->spell == spell) // Here > DeleteMemorieSpell(ch, smd); // Here > } > } Maybe you want REMOVE_FROM_LIST() ?? After you've removed it from the list, you still have a pointer to it so you can do whatever unspeakable things to it you want. > sprintf(BufOne, "You purge '%s' from your thoughts.\r\n", >spell_info[spell].name); > send_to_char(BufOne, ch); Get the latest bpl versions for: send_to_char(ch, "You purge '%s' from your thoughts.\r\n", spell_info[spell].name); > for (temp = ch->MemList; temp && (temp->next != smd); temp = >temp->next); > if (temp) > temp->next = smd->next; > } It's very naughty to remove an item from a list someone else is traversing without a temporary marker. (See 'next_char' uses.) > FREE((char *) smd); > smd = NULL; >} No reason to NULL it. -- George Greer greerga@circlemud.org -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT