Author: cazfi Date: Wed Aug 3 11:59:13 2016 New Revision: 33440 URL: http://svn.gna.org/viewcvs/freeciv?rev=33440&view=rev Log: Give sensible error about unknown default_government in ruleset.
See bug #24905 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=33440&r1=33439&r2=33440&view=diff ============================================================================== --- branches/S2_5/server/ruleset.c (original) +++ branches/S2_5/server/ruleset.c Wed Aug 3 11:59:13 2016 @@ -3743,35 +3743,43 @@ * a specific ruleset to a gov not explicitly known by the nation set. */ if (sval != NULL) { default_government = government_by_rule_name(sval); - } - - sec = secfile_sections_by_name_prefix(file, NATION_SET_SECTION_PREFIX); - if (sec) { - section_list_iterate(sec, psection) { - const char *set_name, *set_rule_name, *set_description; - - set_name = secfile_lookup_str(file, "%s.name", section_name(psection)); - set_rule_name = - secfile_lookup_str(file, "%s.rule_name", section_name(psection)); - set_description = secfile_lookup_str_default(file, "", "%s.description", - section_name(psection)); - if (NULL == set_name || NULL == set_rule_name) { - ruleset_error(LOG_ERROR, "Error: %s", secfile_error()); - ok = FALSE; - break; - } - if (nation_set_new(set_name, set_rule_name, set_description) == NULL) { - ok = FALSE; - break; - } - } section_list_iterate_end; - section_list_destroy(sec); - sec = NULL; - } else { - ruleset_error(LOG_ERROR, - "At least one nation set [" NATION_SET_SECTION_PREFIX "_*] " - "must be defined."); - ok = FALSE; + if (default_government == NULL) { + ruleset_error(LOG_ERROR, + "Tried to set unknown government type \"%s\" as default_government!", + sval); + ok = FALSE; + } + } + + if (ok) { + sec = secfile_sections_by_name_prefix(file, NATION_SET_SECTION_PREFIX); + if (sec) { + section_list_iterate(sec, psection) { + const char *set_name, *set_rule_name, *set_description; + + set_name = secfile_lookup_str(file, "%s.name", section_name(psection)); + set_rule_name = + secfile_lookup_str(file, "%s.rule_name", section_name(psection)); + set_description = secfile_lookup_str_default(file, "", "%s.description", + section_name(psection)); + if (NULL == set_name || NULL == set_rule_name) { + ruleset_error(LOG_ERROR, "Error: %s", secfile_error()); + ok = FALSE; + break; + } + if (nation_set_new(set_name, set_rule_name, set_description) == NULL) { + ok = FALSE; + break; + } + } section_list_iterate_end; + section_list_destroy(sec); + sec = NULL; + } else { + ruleset_error(LOG_ERROR, + "At least one nation set [" NATION_SET_SECTION_PREFIX "_*] " + "must be defined."); + ok = FALSE; + } } if (ok) { _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits