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