--- deliantra/server/common/player.C 2006/09/14 22:34:00 1.5 +++ deliantra/server/common/player.C 2006/12/12 20:53:02 1.7 @@ -34,22 +34,27 @@ while (prev != NULL && prev->next != NULL && prev->next != pl) prev = prev->next; + if (prev->next != pl) { LOG (llevError, "Free_player: Can't find previous player.\n"); exit (1); } + prev->next = pl->next; } else first_player = pl->next; - if (pl->ob != NULL) + if (pl->ob) { if (!QUERY_FLAG (pl->ob, FLAG_REMOVED)) - remove_ob (pl->ob); - free_object (pl->ob); + pl->ob->remove (); + + pl->ob->contr = 0; + pl->ob->destroy (); } + /* Clear item stack */ if (pl->stack_items) free (pl->stack_items);