(svn r7517) -Codechange: Set pointers to NULL when freeing the newgrf config variables and add the proper const to CopyGRFConfigList
--- a/newgrf_config.c Wed Dec 20 19:16:44 2006 +0000
+++ b/newgrf_config.c Wed Dec 20 20:43:52 2006 +0000
@@ -82,15 +82,16 @@
}
-void ClearGRFConfig(GRFConfig *config)
+void ClearGRFConfig(GRFConfig **config)
{
/* GCF_COPY as in NOT strdupped/alloced the filename, name and info */
- if (!HASBIT(config->flags, GCF_COPY)) {
- free(config->filename);
- free(config->name);
- free(config->info);
+ if (!HASBIT((*config)->flags, GCF_COPY)) {
+ free((*config)->filename);
+ free((*config)->name);
+ free((*config)->info);
}
- free(config);
+ free(*config);
+ *config = NULL;
}
@@ -100,13 +101,13 @@
GRFConfig *c, *next;
for (c = config; c != NULL; c = next) {
next = c->next;
- ClearGRFConfig(c);
+ ClearGRFConfig(&c);
}
}
/* Copy a GRF Config list */
-static GRFConfig **CopyGRFConfigList(GRFConfig **dst, GRFConfig *src)
+GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src)
{
GRFConfig *c;
--- a/newgrf_config.h Wed Dec 20 19:16:44 2006 +0000
+++ b/newgrf_config.h Wed Dec 20 20:43:52 2006 +0000
@@ -43,7 +43,8 @@
void ScanNewGRFFiles(void);
const GRFConfig *FindGRFConfig(uint32 grfid, uint8 *md5sum);
GRFConfig *GetGRFConfig(uint32 grfid);
-void ClearGRFConfig(GRFConfig *config);
+GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src);
+void ClearGRFConfig(GRFConfig **config);
void ClearGRFConfigList(GRFConfig *config);
void ResetGRFConfig(bool defaults);
bool IsGoodGRFConfigList(void);
--- a/settings.c Wed Dec 20 19:16:44 2006 +0000
+++ b/settings.c Wed Dec 20 20:43:52 2006 +0000
@@ -1534,7 +1534,7 @@
}
ShowInfoF("ini: ignoring invalid NewGRF '%s': %s", item->name, msg);
- ClearGRFConfig(c);
+ ClearGRFConfig(&c);
continue;
}