From 28042b65ac4574a3bcf3fa2ff206e62f498492b2 Mon Sep 17 00:00:00 2001 From: Darkvater Date: Wed, 20 Dec 2006 21:17:33 +0000 Subject: (svn r7518) -Codechange: more NULL pointer resets after free. --- network_gamelist.c | 5 +++-- newgrf_config.c | 18 ++++++++++-------- 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); -- cgit v1.2.3-70-g09d2