Author: jtn
Date: Thu Dec 17 03:34:46 2015
New Revision: 31038
URL: http://svn.gna.org/viewcvs/freeciv?rev=31038&view=rev
Log:
Get rid of broken and slow code attempting to enforce that different
nations don't share leader names; this accidentally hadn't been enforced
since S2_3 (r18279), and has no known major harmful effects.
See gna bug #23791.
Modified:
branches/S2_5/server/ruleset.c
Modified: branches/S2_5/server/ruleset.c
URL:
http://svn.gna.org/viewcvs/freeciv/branches/S2_5/server/ruleset.c?rev=31038&r1=31037&r2=31038&view=diff
==============================================================================
--- branches/S2_5/server/ruleset.c (original)
+++ branches/S2_5/server/ruleset.c Thu Dec 17 03:34:46 2015
@@ -3384,13 +3384,11 @@
}
/****************************************************************************
- This checks if nations[pos] leader names are not already defined in any
- previous nation, or twice in its own leader name table.
- If not return NULL, if yes return pointer to name which is repeated
- and id of a conflicting nation as second parameter.
+ Check for duplicate leader names in nation.
+ If no duplicates return NULL; if yes return pointer to name which is
+ repeated.
****************************************************************************/
-static const char *check_leader_names(struct nation_type *pnation,
- struct nation_type **ppconflict_nation)
+static const char *check_leader_names(struct nation_type *pnation)
{
nation_leader_list_iterate(nation_leaders(pnation), pleader) {
const char *name = nation_leader_name(pleader);
@@ -3399,31 +3397,10 @@
if (prev_leader == pleader) {
break;
} else if (0 == fc_strcasecmp(name, nation_leader_name(prev_leader))) {
- *ppconflict_nation = pnation;
return name;
}
} nation_leader_list_iterate_end;
} nation_leader_list_iterate_end;
-
- nations_iterate(prev_nation) {
- if (prev_nation == pnation) {
- break;
- }
-
- nation_leader_list_iterate(nation_leaders(prev_nation), pleader) {
- const char *name = nation_leader_name(pleader);
-
- nation_leader_list_iterate(nation_leaders(prev_nation), prev_leader) {
- if (prev_leader == pleader) {
- break;
- } else if (0 == fc_strcasecmp(name,
- nation_leader_name(prev_leader))) {
- *ppconflict_nation = prev_nation;
- return name;
- }
- } nation_leader_list_iterate_end;
- } nation_leader_list_iterate_end;
- } nations_iterate_end;
return NULL;
}
@@ -3966,22 +3943,13 @@
break;
}
- /* Check if leader name is not already defined */
- if ((bad_leader = check_leader_names(pnation, &pconflict))) {
- if (pnation == pconflict) {
- ruleset_error(LOG_ERROR,
- "Nation %s: leader \"%s\" defined more than once.",
- nation_rule_name(pnation), bad_leader);
- ok = FALSE;
- break;
- } else {
- ruleset_error(LOG_ERROR,
- "Nations %s and %s share the same leader \"%s\".",
- nation_rule_name(pnation), nation_rule_name(pconflict),
- bad_leader);
- ok = FALSE;
- break;
- }
+ /* Check if leader name is not already defined in this nation. */
+ if ((bad_leader = check_leader_names(pnation))) {
+ ruleset_error(LOG_ERROR,
+ "Nation %s: leader \"%s\" defined more than once.",
+ nation_rule_name(pnation), bad_leader);
+ ok = FALSE;
+ break;
}
/* Nation player color preference, if any */
_______________________________________________
Freeciv-commits mailing list
[email protected]
https://mail.gna.org/listinfo/freeciv-commits