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

Reply via email to