Author: cazfi
Date: Fri Apr 15 15:30:28 2016
New Revision: 32408

URL: http://svn.gna.org/viewcvs/freeciv?rev=32408&view=rev
Log:
Free individual items from allowed_govs, allowed_styles, and allowed_terrains 
vectors.

See bug #24561

Modified:
    trunk/common/game.c
    trunk/common/game.h
    trunk/server/ruleset.c
    trunk/tools/ruledit/rulesave.c

Modified: trunk/common/game.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=32408&r1=32407&r2=32408&view=diff
==============================================================================
--- trunk/common/game.c (original)
+++ trunk/common/game.c Fri Apr 15 15:30:28 2016
@@ -549,6 +549,9 @@
     game.server.ruledit.allowed_govs = NULL;
     game.server.ruledit.allowed_terrains = NULL;
     game.server.ruledit.allowed_styles = NULL;
+    game.server.ruledit.nc_agovs = NULL;
+    game.server.ruledit.nc_aterrs = NULL;
+    game.server.ruledit.nc_astyles = NULL;
     game.server.ruledit.ag_count = 0;
     game.server.ruledit.at_count = 0;
     game.server.ruledit.as_count = 0;
@@ -624,16 +627,28 @@
       game.server.ruledit.embedded_nations = NULL;
       game.server.ruledit.embedded_nations_count = 0;
       if (game.server.ruledit.allowed_govs != NULL) {
+        for (i = 0; i < game.server.ruledit.ag_count; i++) {
+          free(game.server.ruledit.nc_agovs[i]);
+        }
         free(game.server.ruledit.allowed_govs);
         game.server.ruledit.allowed_govs = NULL;
+        game.server.ruledit.nc_agovs = NULL;
       }
       if (game.server.ruledit.allowed_terrains != NULL) {
+        for (i = 0; i < game.server.ruledit.at_count; i++) {
+          free(game.server.ruledit.nc_aterrs[i]);
+        }
         free(game.server.ruledit.allowed_terrains);
         game.server.ruledit.allowed_terrains = NULL;
+        game.server.ruledit.nc_aterrs = NULL;
       }
       if (game.server.ruledit.allowed_styles != NULL) {
+        for (i = 0; i < game.server.ruledit.as_count; i++) {
+          free(game.server.ruledit.nc_astyles[i]);
+        }
         free(game.server.ruledit.allowed_styles);
         game.server.ruledit.allowed_styles = NULL;
+        game.server.ruledit.nc_astyles = NULL;
       }
     }
   }

Modified: trunk/common/game.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=32408&r1=32407&r2=32408&view=diff
==============================================================================
--- trunk/common/game.h (original)
+++ trunk/common/game.h Fri Apr 15 15:30:28 2016
@@ -264,10 +264,13 @@
         char **embedded_nations;
         size_t embedded_nations_count;
         const char **allowed_govs;
+        char **nc_agovs;
         size_t ag_count;
         const char **allowed_terrains;
+        char **nc_aterrs;
         size_t at_count;
         const char **allowed_styles;
+        char **nc_astyles;
         size_t as_count;
       } ruledit;
     } server;

Modified: trunk/server/ruleset.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/ruleset.c?rev=32408&r1=32407&r2=32408&view=diff
==============================================================================
--- trunk/server/ruleset.c      (original)
+++ trunk/server/ruleset.c      Fri Apr 15 15:30:28 2016
@@ -4143,8 +4143,10 @@
                                  "compatibility.allowed_govs");
     if (vec != NULL) {
       /* Copy to persistent vector */
-      game.server.ruledit.allowed_govs
+      game.server.ruledit.nc_agovs
         = fc_malloc(game.server.ruledit.ag_count * sizeof(char *));
+      game.server.ruledit.allowed_govs =
+        (const char **)game.server.ruledit.nc_agovs;
 
       for (j = 0; j < game.server.ruledit.ag_count; j++) {
         game.server.ruledit.allowed_govs[j] = fc_strdup(vec[j]);
@@ -4157,8 +4159,10 @@
                                  "compatibility.allowed_terrains");
     if (vec != NULL) {
       /* Copy to persistent vector */
-      game.server.ruledit.allowed_terrains
+      game.server.ruledit.nc_aterrs
         = fc_malloc(game.server.ruledit.at_count * sizeof(char *));
+      game.server.ruledit.allowed_terrains =
+        (const char **)game.server.ruledit.nc_aterrs;
 
       for (j = 0; j < game.server.ruledit.at_count; j++) {
         game.server.ruledit.allowed_terrains[j] = fc_strdup(vec[j]);
@@ -4171,8 +4175,10 @@
                                  "compatibility.allowed_styles");
     if (vec != NULL) {
       /* Copy to persistent vector */
-      game.server.ruledit.allowed_styles
+      game.server.ruledit.nc_astyles
         = fc_malloc(game.server.ruledit.as_count * sizeof(char *));
+      game.server.ruledit.allowed_styles =
+        (const char **)game.server.ruledit.nc_astyles;
 
       for (j = 0; j < game.server.ruledit.as_count; j++) {
         game.server.ruledit.allowed_styles[j] = fc_strdup(vec[j]);

Modified: trunk/tools/ruledit/rulesave.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruledit/rulesave.c?rev=32408&r1=32407&r2=32408&view=diff
==============================================================================
--- trunk/tools/ruledit/rulesave.c      (original)
+++ trunk/tools/ruledit/rulesave.c      Fri Apr 15 15:30:28 2016
@@ -1588,15 +1588,18 @@
               "default_traits", "");
 
   if (game.server.ruledit.allowed_govs != NULL) {
-    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_govs, 
game.server.ruledit.ag_count,
+    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_govs,
+                           game.server.ruledit.ag_count,
                            "compatibility.allowed_govs");
   }
   if (game.server.ruledit.allowed_terrains != NULL) {
-    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_terrains, 
game.server.ruledit.at_count,
+    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_terrains,
+                           game.server.ruledit.at_count,
                            "compatibility.allowed_terrains");
   }
   if (game.server.ruledit.allowed_styles != NULL) {
-    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_styles, 
game.server.ruledit.as_count,
+    secfile_insert_str_vec(sfile, game.server.ruledit.allowed_styles,
+                           game.server.ruledit.as_count,
                            "compatibility.allowed_styles");
   }
 


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

Reply via email to