Mercurial > hg > openttd
changeset 5347:95a331742793 draft
(svn r7518) -Codechange: more NULL pointer resets after free.
author | Darkvater <Darkvater@openttd.org> |
---|---|
date | Wed, 20 Dec 2006 21:17:33 +0000 |
parents | 32f108f1c4c5 |
children | ed3dff9b8ad1 |
files | network_gamelist.c newgrf_config.c newgrf_config.h |
diffstat | 3 files changed, 14 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/network_gamelist.c +++ b/network_gamelist.c @@ -59,9 +59,10 @@ } /* Remove GRFConfig information */ - ClearGRFConfigList(remove->info.grfconfig); + ClearGRFConfigList(&remove->info.grfconfig); + free(remove); + remove = NULL; - free(remove); DEBUG(net, 4) ("[NET][GameList] Removed server from list"); UpdateNetworkGameWindow(false); return;
--- a/newgrf_config.c +++ b/newgrf_config.c @@ -96,17 +96,21 @@ /* 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 @@ { GRFConfig **c = &_grfconfig; - ClearGRFConfigList(_grfconfig); - _grfconfig = NULL; + ClearGRFConfigList(c); if (defaults) c = CopyGRFConfigList(c, _grfconfig_newgame); CopyGRFConfigList(c, _grfconfig_static); @@ -244,8 +247,7 @@ { 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 @@ /* Append static NewGRF configuration */ CopyGRFConfigList(last, _grfconfig_static); - ClearGRFConfigList(_grfconfig); + ClearGRFConfigList(&_grfconfig); _grfconfig = first; }
--- a/newgrf_config.h +++ b/newgrf_config.h @@ -45,7 +45,7 @@ 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);