diff options
author | Darkvater <darkvater@openttd.org> | 2006-12-20 21:17:33 +0000 |
---|---|---|
committer | Darkvater <darkvater@openttd.org> | 2006-12-20 21:17:33 +0000 |
commit | 28042b65ac4574a3bcf3fa2ff206e62f498492b2 (patch) | |
tree | 5b8c27872faf8943144f2948020a199b2cbb85c1 | |
parent | 1812bcfc8c20dfea2df38da7f7b042c2d62f551b (diff) | |
download | openttd-28042b65ac4574a3bcf3fa2ff206e62f498492b2.tar.xz |
(svn r7518) -Codechange: more NULL pointer resets after free.
-rw-r--r-- | network_gamelist.c | 5 | ||||
-rw-r--r-- | newgrf_config.c | 18 | ||||
-rw-r--r-- | newgrf_config.h | 2 |
3 files changed, 14 insertions, 11 deletions
diff --git a/network_gamelist.c b/network_gamelist.c index f52272307..bcc75ad7e 100644 --- a/network_gamelist.c +++ b/network_gamelist.c @@ -59,9 +59,10 @@ void NetworkGameListRemoveItem(NetworkGameList *remove) } /* Remove GRFConfig information */ - ClearGRFConfigList(remove->info.grfconfig); - + ClearGRFConfigList(&remove->info.grfconfig); free(remove); + remove = NULL; + DEBUG(net, 4) ("[NET][GameList] Removed server from list"); UpdateNetworkGameWindow(false); return; diff --git a/newgrf_config.c b/newgrf_config.c index b0f06d110..6caec3e04 100644 --- a/newgrf_config.c +++ b/newgrf_config.c @@ -96,17 +96,21 @@ void ClearGRFConfig(GRFConfig **config) /* Clear a GRF Config list */ -void ClearGRFConfigList(GRFConfig *config) +void ClearGRFConfigList(GRFConfig **config) { GRFConfig *c, *next; - for (c = config; c != NULL; c = next) { + for (c = *config; c != NULL; c = next) { next = c->next; ClearGRFConfig(&c); } + *config = NULL; } -/* Copy a GRF Config list */ +/** Copy a GRF Config list + * @param dst pointer to destination list + * @param srt pointer to source list values + * @return pointer to the last value added to the destination list */ GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src) { GRFConfig *c; @@ -131,8 +135,7 @@ void ResetGRFConfig(bool defaults) { GRFConfig **c = &_grfconfig; - ClearGRFConfigList(_grfconfig); - _grfconfig = NULL; + ClearGRFConfigList(c); if (defaults) c = CopyGRFConfigList(c, _grfconfig_newgame); CopyGRFConfigList(c, _grfconfig_static); @@ -244,8 +247,7 @@ void ScanNewGRFFiles(void) { uint num; - ClearGRFConfigList(_all_grfs); - _all_grfs = NULL; + ClearGRFConfigList(&_all_grfs); DEBUG(grf, 1) ("[GRF] Scanning for NewGRFs"); num = ScanPath(_paths.data_dir); @@ -388,7 +390,7 @@ static void Load_NGRF(void) /* Append static NewGRF configuration */ CopyGRFConfigList(last, _grfconfig_static); - ClearGRFConfigList(_grfconfig); + ClearGRFConfigList(&_grfconfig); _grfconfig = first; } diff --git a/newgrf_config.h b/newgrf_config.h index c6f49bb60..b0660e3a6 100644 --- a/newgrf_config.h +++ b/newgrf_config.h @@ -45,7 +45,7 @@ const GRFConfig *FindGRFConfig(uint32 grfid, uint8 *md5sum); GRFConfig *GetGRFConfig(uint32 grfid); GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src); void ClearGRFConfig(GRFConfig **config); -void ClearGRFConfigList(GRFConfig *config); +void ClearGRFConfigList(GRFConfig **config); void ResetGRFConfig(bool defaults); bool IsGoodGRFConfigList(void); bool FillGRFDetails(GRFConfig *config, bool is_static); |