Author: sveinung
Date: Tue Aug 16 19:55:14 2016
New Revision: 33628

URL: http://svn.gna.org/viewcvs/freeciv?rev=33628&view=rev
Log:
Sanity check action distance range.

See patch #7605

Modified:
    trunk/server/rssanity.c

Modified: trunk/server/rssanity.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/rssanity.c?rev=33628&r1=33627&r2=33628&view=diff
==============================================================================
--- trunk/server/rssanity.c     (original)
+++ trunk/server/rssanity.c     Tue Aug 16 19:55:14 2016
@@ -21,6 +21,7 @@
 #include "effects.h"
 #include "game.h"
 #include "government.h"
+#include "map.h"
 #include "movement.h"
 #include "player.h"
 #include "road.h"
@@ -901,6 +902,27 @@
   action_iterate(act) {
     struct action *paction = action_by_number(act);
 
+    if (paction->min_distance < 0) {
+      ruleset_error(LOG_ERROR, "Action %s: negative min distance (%d).",
+                    action_get_rule_name(act), paction->min_distance);
+      ok = FALSE;
+    }
+
+    if (paction->max_distance > MAP_MAX_LINEAR_SIZE) {
+      ruleset_error(LOG_ERROR, "Action %s: max distance is %d. "
+                    "A map can't be that big.",
+                    action_get_rule_name(act), paction->max_distance);
+      ok = FALSE;
+    }
+
+    if (paction->min_distance > paction->max_distance) {
+      ruleset_error(LOG_ERROR,
+                    "Action %s: min distance is %d but max distance is %d.",
+                    action_get_rule_name(act),
+                    paction->min_distance, paction->max_distance);
+      ok = FALSE;
+    }
+
     action_iterate(blocker) {
       if (BV_ISSET(paction->blocked_by, blocker)
           && action_get_target_kind(blocker) == ATK_UNIT


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

Reply via email to