Author: jtn
Date: Mon Dec 21 10:40:34 2015
New Revision: 31133

URL: http://svn.gna.org/viewcvs/freeciv?rev=31133&view=rev
Log:
Check for duplicate flag names when loading rulesets.

See gna bug #24207.

Modified:
    branches/S2_6/server/ruleset.c

Modified: branches/S2_6/server/ruleset.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/ruleset.c?rev=31133&r1=31132&r2=31133&view=diff
==============================================================================
--- branches/S2_6/server/ruleset.c      (original)
+++ branches/S2_6/server/ruleset.c      Mon Dec 21 10:40:34 2015
@@ -1065,6 +1065,12 @@
        i++) {
     const char *helptxt = secfile_lookup_str_default(file, NULL, 
"control.flags%d.helptxt",
                                                      i);
+    if (tech_flag_id_by_name(flag, fc_strcasecmp) != tech_flag_id_invalid()) {
+      ruleset_error(LOG_ERROR, "\"%s\": Duplicate tech flag name '%s'",
+                    filename, flag);
+      ok = FALSE;
+      break;
+    }
     if (i > MAX_NUM_USER_TECH_FLAGS) {
       ruleset_error(LOG_ERROR, "\"%s\": Too many user tech flags!",
                     filename);
@@ -1296,6 +1302,13 @@
     const char *helptxt = secfile_lookup_str_default(file, NULL, 
"control.flags%d.helptxt",
                                                      i);
 
+    if (unit_type_flag_id_by_name(flag, fc_strcasecmp)
+        != unit_type_flag_id_invalid()) {
+      ruleset_error(LOG_ERROR, "\"%s\": Duplicate unit flag name '%s'",
+                    filename, flag);
+      ok = FALSE;
+      break;
+    }
     if (i > MAX_NUM_USER_UNIT_FLAGS) {
       ruleset_error(LOG_ERROR, "\"%s\": Too many user unit type flags!",
                     filename);
@@ -2166,6 +2179,13 @@
     const char *helptxt = secfile_lookup_str_default(file, NULL, 
"control.flags%d.helptxt",
                                                      i);
 
+    if (terrain_flag_id_by_name(flag, fc_strcasecmp)
+        != terrain_flag_id_invalid()) {
+      ruleset_error(LOG_ERROR, "\"%s\": Duplicate terrain flag name '%s'",
+                    filename, flag);
+      ok = FALSE;
+      break;
+    }
     if (i > MAX_NUM_USER_TER_FLAGS) {
       ruleset_error(LOG_ERROR, "\"%s\": Too many user terrain flags!",
                     filename);


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to