diff -Nurd -X.diff_ignore freeciv/server/savegame2.c freeciv/server/savegame2.c
--- freeciv/server/savegame2.c	2013-01-13 05:45:19.284466941 +0200
+++ freeciv/server/savegame2.c	2013-01-17 17:47:46.875950222 +0200
@@ -336,6 +336,7 @@
 struct loaddata {
   struct section_file *file;
   const char *secfile_options;
+  int version;
 
   /* loaded in sg_load_savefile(); needed in sg_load_player() */
   struct {
@@ -1934,18 +1935,17 @@
 ****************************************************************************/
 static void sg_load_game(struct loaddata *loading)
 {
-  int game_version;
   const char *string;
 
   /* Check status and return if not OK (sg_success != TRUE). */
   sg_check_ret();
 
   /* Load version. */
-  game_version
+  loading->version
     = secfile_lookup_int_default(loading->file, 0, "game.version");
   /* We require at least version 2.2.99 */
-  sg_failure_ret(20299 <= game_version, "Saved game is too old, at least "
-                                        "version 2.2.99 required.");
+  sg_failure_ret(20299 <= loading->version, "Saved game is too old, at least "
+                                            "version 2.2.99 required.");
 
   /* Load server state. */
   string = secfile_lookup_str_default(loading->file, "S_S_INITIAL",
@@ -2375,7 +2375,10 @@
     sg_load_map_tiles(loading);
     sg_load_map_startpos(loading);
     sg_load_map_tiles_bases(loading);
-    sg_load_map_tiles_roads(loading);
+    if (loading->version >= 20) {
+      /* 2.5.0 or newer */
+      sg_load_map_tiles_roads(loading);
+    }
     if (has_capability("specials", loading->secfile_options)) {
       /* Load specials and resources. */
       sg_load_map_tiles_specials(loading, FALSE);
