--- deliantra/server/common/map.C 2007/01/04 16:56:39 1.69 +++ deliantra/server/common/map.C 2007/01/14 18:00:33 1.73 @@ -1,6 +1,7 @@ /* CrossFire, A Multiplayer game for X-windows + Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team Copyright (C) 2001-2003 Mark Wedel & Crossfire Development Team Copyright (C) 1992 Frank Tore Johansen @@ -401,7 +402,7 @@ * mapflags is the same as we get with load_original_map */ bool -maptile::load_objects (object_thawer &thawer) +maptile::_load_objects (object_thawer &thawer) { int unique; object *op, *prev = NULL, *last_more = NULL, *otmp; @@ -487,23 +488,25 @@ } bool -maptile::save_objects (object_freezer &freezer, int flags) +maptile::_save_objects (object_freezer &freezer, int flags) { static int cede_count = 0; if (flags & IO_HEADER) - save_header (freezer); + _save_header (freezer); if (!spaces) return false; for (int i = 0; i < size (); ++i) { +#if 0 // temporarily disabled for improved(?) stability, schmorp #TODO#d#//D if (cede_count >= 500) { cede_count = 0; coroapi::cede (); } +#endif int unique = 0; for (object *op = spaces [i].bot; op; op = op->above) @@ -531,7 +534,7 @@ } bool -maptile::load_objects (const char *path, bool skip_header) +maptile::_load_objects (const char *path, bool skip_header) { object_thawer thawer (path); @@ -549,15 +552,15 @@ thawer.skip_kv (kw); } - return load_objects (thawer); + return _load_objects (thawer); } bool -maptile::save_objects (const char *path, int flags) +maptile::_save_objects (const char *path, int flags) { object_freezer freezer; - if (!save_objects (freezer, flags)) + if (!_save_objects (freezer, flags)) return false; return freezer.save (path); @@ -731,12 +734,8 @@ * MSW 2001-07-01 */ bool -maptile::load_header (object_thawer &thawer) +maptile::_load_header (object_thawer &thawer) { - char buf[HUGE_BUF], msgbuf[HUGE_BUF], maplorebuf[HUGE_BUF], *key = NULL, *value, *end; - int msgpos = 0; - int maplorepos = 0; - for (;;) { keyword kw = thawer.get_kv (); @@ -750,6 +749,11 @@ case KW_end: return true; + default: + case KW_ERROR: + LOG (llevError, "%s: skipping errornous line (%s) while reading map header.\n", &path, thawer.last_keyword); + break; + case KW_msg: thawer.get_ml (KW_endmsg, msg); break; @@ -809,10 +813,6 @@ case KW_tile_path_2: thawer.get (tile_path [1]); break; case KW_tile_path_3: thawer.get (tile_path [2]); break; case KW_tile_path_4: thawer.get (tile_path [3]); break; - - default: - LOG (llevError, "%s: skipping unknown key in map header: %s\n", &path, keyword_str [kw]); - break; } } @@ -820,14 +820,14 @@ } bool -maptile::load_header (const char *path) +maptile::_load_header (const char *path) { object_thawer thawer (path); if (!thawer) return false; - return load_header (thawer); + return _load_header (thawer); } /****************************************************************************** @@ -860,7 +860,7 @@ } bool -maptile::save_header (object_freezer &freezer) +maptile::_save_header (object_freezer &freezer) { #define MAP_OUT(k) freezer.put (KW_ ## k, k) #define MAP_OUT2(k,v) freezer.put (KW_ ## k, v) @@ -919,11 +919,11 @@ } bool -maptile::save_header (const char *path) +maptile::_save_header (const char *path) { object_freezer freezer; - if (!save_header (freezer)) + if (!_save_header (freezer)) return false; return freezer.save (path);