Author: cazfi
Date: Sun Aug 30 16:23:41 2015
New Revision: 29738

URL: http://svn.gna.org/viewcvs/freeciv?rev=29738&view=rev
Log:
Destroy "eot" and "between turns" timers also when the server exits via /quit 
mid-game.

See bug #23826

Modified:
    trunk/server/srv_main.c

Modified: trunk/server/srv_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/srv_main.c?rev=29738&r1=29737&r2=29738&view=diff
==============================================================================
--- trunk/server/srv_main.c     (original)
+++ trunk/server/srv_main.c     Sun Aug 30 16:23:41 2015
@@ -182,6 +182,11 @@
 /* server initialized flag */
 static bool has_been_srv_init = FALSE;
 
+/* time server processing at end-of-turn */
+static struct timer *eot_timer = NULL;
+
+static struct timer *between_turns = NULL;
+
 /**************************************************************************
   Initialize the game seed.  This may safely be called multiple times.
 **************************************************************************/
@@ -1609,6 +1614,17 @@
 **************************************************************************/
 void server_quit(void)
 {
+  if (game.server.save_timer != NULL) {
+    timer_destroy(game.server.save_timer);
+    game.server.save_timer = NULL;
+  }
+  if (between_turns != NULL) {
+    timer_destroy(between_turns);
+    between_turns = NULL;
+  }
+  if (eot_timer != NULL) {
+    timer_destroy(eot_timer);
+  }
   set_server_state(S_S_OVER);
   mapimg_free();
   server_game_free();
@@ -2501,8 +2517,6 @@
 **************************************************************************/
 static void srv_running(void)
 {
-  struct timer *eot_timer;     /* time server processing at end-of-turn */
-  struct timer *between_turns = NULL;
   int save_counter = 0, i;
   bool is_new_turn = game.info.is_new_game;
   bool skip_mapimg = !game.info.is_new_game; /* Do not overwrite start-of-turn 
image */
@@ -2514,7 +2528,6 @@
   log_verbose("srv_running() mostly redundant send_server_settings()");
   send_server_settings(NULL);
 
-  eot_timer = timer_new(TIMER_CPU, TIMER_ACTIVE);
   timer_start(eot_timer);
 
   if (game.server.autosaves & (1 << AS_TIMER)) {
@@ -2673,7 +2686,7 @@
     timer_destroy(between_turns);
     between_turns = NULL;
   }
-  timer_destroy(eot_timer);
+  timer_clear(eot_timer);
 }
 
 /**************************************************************************
@@ -2758,6 +2771,8 @@
       exit(EXIT_FAILURE);
     }
   }
+
+  eot_timer = timer_new(TIMER_CPU, TIMER_ACTIVE);
 }
 
 /**************************************************************************


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to