--- deliantra/server/common/object.C 2006/11/07 16:30:54 1.53 +++ deliantra/server/common/object.C 2006/12/03 02:46:33 1.57 @@ -414,13 +414,11 @@ object * find_object (tag_t i) { - object *op; - - for (op = object::first; op != NULL; op = op->next) + for (object *op = object::first; op; op = op->next) if (op->count == i) - break; + return op; - return op; + return 0; } /* @@ -971,6 +969,26 @@ } } + // hack to ensure that freed objects still have a valid map + { + static maptile *freed_map; // freed objects are moved here to avoid crashes + + if (!freed_map) + { + freed_map = new maptile; + + freed_map->name = "/internal/freed_objects_map"; + freed_map->width = 3; + freed_map->height = 3; + + freed_map->allocate (); + } + + map = freed_map; + x = 1; + y = 1; + } + // clear those pointers that likely might have circular references to us owner = 0; enemy = 0;