Author: pepeto
Date: Mon Aug 25 17:39:12 2014
New Revision: 26033

URL: http://svn.gna.org/viewcvs/freeciv?rev=26033&view=rev
Log:
struct research_player_iter cleanup.

See gna patch #5044

Modified:
    trunk/common/research.c
    trunk/server/srv_main.c

Modified: trunk/common/research.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/research.c?rev=26033&r1=26032&r2=26033&view=diff
==============================================================================
--- trunk/common/research.c     (original)
+++ trunk/common/research.c     Mon Aug 25 17:39:12 2014
@@ -971,21 +971,18 @@
 }
 
 /****************************************************************************
+  Returns whether the iterator is currently at a valid state.
+****************************************************************************/
+static inline bool research_player_iter_valid_state(struct iterator *it)
+{
+  const struct player *pplayer = iterator_get(it);
+
+  return (NULL == pplayer || pplayer->is_alive);
+}
+
+/****************************************************************************
   Returns player of the iterator.
 ****************************************************************************/
-static void research_player_iter_validate(struct iterator *it)
-{
-  const struct player *pplayer;
-
-  for (pplayer = iterator_get(it); NULL != pplayer && !pplayer->is_alive;
-       pplayer = iterator_get(it)) {
-    iterator_next(it);
-  }
-}
-
-/****************************************************************************
-  Returns player of the iterator.
-****************************************************************************/
 static void *research_player_iter_pooled_get(const struct iterator *it)
 {
   return player_list_link_data(RESEARCH_PLAYER_ITER(it)->plink);
@@ -998,8 +995,9 @@
 {
   struct research_player_iter *rpit = RESEARCH_PLAYER_ITER(it);
 
-  rpit->plink = player_list_link_next(rpit->plink);
-  research_player_iter_validate(it);
+  do {
+    rpit->plink = player_list_link_next(rpit->plink);
+  } while (!research_player_iter_valid_state(it));
 }
 
 /****************************************************************************
@@ -1055,7 +1053,11 @@
     it->pplayer = (NULL != presearch
                    ? player_by_number(research_number(presearch)) : NULL);
   }
-  research_player_iter_validate(base);
+
+  /* Ensure we have consistent data. */
+  if (!research_player_iter_valid_state(base)) {
+    iterator_next(base);
+  }
 
   return base;
 }

Modified: trunk/server/srv_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/srv_main.c?rev=26033&r1=26032&r2=26033&view=diff
==============================================================================
--- trunk/server/srv_main.c     (original)
+++ trunk/server/srv_main.c     Mon Aug 25 17:39:12 2014
@@ -1275,6 +1275,11 @@
 
   log_debug("Sendresearchinfo");
   researches_iterate(presearch) {
+research_players_iterate(presearch, pplayer){
+log_normal("research %d (%s): %d (%s)",
+           research_number(presearch), research_rule_name(presearch),
+           player_number(pplayer), player_name(pplayer));
+}research_players_iterate_end;
     send_research_info(presearch, NULL);
   } researches_iterate_end;
 


_______________________________________________
Freeciv-commits mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to