Index: client/civclient.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/client/civclient.c,v retrieving revision 1.127 diff -u -r1.127 civclient.c --- client/civclient.c 2002/05/03 16:35:07 1.127 +++ client/civclient.c 2002/05/16 12:32:29 @@ -557,10 +557,9 @@ popdown_all_city_dialogs(); close_all_diplomacy_dialogs(); client_remove_all_cli_conn(); - game_remove_all_players(); set_unit_focus_no_center(NULL); clear_notify_window(); - idex_init(); /* clear old data */ + game_init(); } update_menus(); } Index: common/game.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/game.c,v retrieving revision 1.139 diff -u -r1.139 game.c --- common/game.c 2002/04/30 12:52:54 1.139 +++ common/game.c 2002/05/16 12:32:30 @@ -40,6 +40,7 @@ void dealloc_id(int id); extern bool is_server; struct civ_game game; +static bool first_init_call = TRUE; /* struct player_score { @@ -695,6 +696,11 @@ game.nbarbarians = 0; game.occupychance= GAME_DEFAULT_OCCUPYCHANCE; + if (!first_init_call) { + geff_vector_free(&game.effects); + ceff_vector_free(&game.destroyed_effects); + } + geff_vector_init(&game.effects); ceff_vector_init(&game.destroyed_effects); @@ -741,11 +747,18 @@ map_init(); idex_init(); + + if (!first_init_call) { + conn_list_unlink_all(&game.all_connections); + conn_list_unlink_all(&game.est_connections); + conn_list_unlink_all(&game.game_connections); + game_remove_all_players(); + } conn_list_init(&game.all_connections); conn_list_init(&game.est_connections); conn_list_init(&game.game_connections); - + for(i=0; i