ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/common/map.C
(Generate patch)

Comparing deliantra/server/common/map.C (file contents):
Revision 1.126 by root, Fri Sep 7 13:10:30 2007 UTC vs.
Revision 1.127 by root, Fri Sep 7 18:03:31 2007 UTC

778 * Remove and free all objects in the given map. 778 * Remove and free all objects in the given map.
779 */ 779 */
780void 780void
781maptile::clear () 781maptile::clear ()
782{ 782{
783 sfree (regions, size ()); regions = 0;
784 delete [] regionmap; regionmap = 0;
785
786 if (spaces) 783 if (spaces)
787 { 784 {
788 for (mapspace *ms = spaces + size (); ms-- > spaces; ) 785 for (mapspace *ms = spaces + size (); ms-- > spaces; )
789 while (object *op = ms->bot) 786 while (object *op = ms->bot)
790 { 787 {
788 // manually remove, as to not trigger anything
789 if (ms->bot = op->above)
790 ms->bot->below = 0;
791
792 op->flag [FLAG_REMOVED] = true;
793
791 op = op->head_ (); 794 if (op == op->head_ ())
795 {
792 op->destroy_inv (false); 796 op->destroy_inv (false);
793 op->destroy (); 797 op->destroy ();
798 }
794 } 799 }
795 800
796 sfree (spaces, size ()), spaces = 0; 801 sfree (spaces, size ()), spaces = 0;
797 } 802 }
798 803
799 if (buttons) 804 if (buttons)
800 free_objectlinkpt (buttons), buttons = 0; 805 free_objectlinkpt (buttons), buttons = 0;
806
807 sfree (regions, size ()); regions = 0;
808 delete [] regionmap; regionmap = 0;
801} 809}
802 810
803void 811void
804maptile::clear_header () 812maptile::clear_header ()
805{ 813{

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines