# HG changeset patch # User Darkvater # Date 1171838253 0 # Node ID d704bf2ec4ee50c12f2faf49f95f893e2d322075 # Parent baaee83f159671e5769433f4508a09e6013e0df2 (svn r8806) -Codechange (r7582): Remove a duplicate append of static GRF's when loading the game and hide the intrinsics of adding elements to the GRFConfig list by using an AppendToGRFConfigList function. diff -r baaee83f1596 -r d704bf2ec4ee src/newgrf_config.cpp --- a/src/newgrf_config.cpp Sun Feb 18 22:07:08 2007 +0000 +++ b/src/newgrf_config.cpp Sun Feb 18 22:37:33 2007 +0000 @@ -115,7 +115,7 @@ /** Copy a GRF Config list * @param dst pointer to destination list - * @param srt pointer to source list values + * @param src pointer to source list values * @return pointer to the last value added to the destination list */ GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src) { @@ -179,6 +179,17 @@ RemoveDuplicatesFromGRFConfigList(*dst); } +/** Appends an element to a list of GRFs + * @param dst the head of the list to add to + * @param el the element that is being added (as a copy) */ +void AppendToGRFConfigList(GRFConfig **dst, const GRFConfig *el) +{ + GRFConfig **tail = dst; + while (*tail != NULL) tail = &(*tail)->next; + CopyGRFConfigList(tail, el); + RemoveDuplicatesFromGRFConfigList(*dst); +} + /* Reset the current GRF Config to either blank or newgame settings */ void ResetGRFConfig(bool defaults) @@ -454,23 +465,14 @@ static void Load_NGRF(void) { - GRFConfig *first = NULL; - GRFConfig **last = &first; - + GRFConfig *c = CallocT(1); while (SlIterateArray() != -1) { - GRFConfig *c = CallocT(1); SlObject(c, _grfconfig_desc); - - /* Append our configuration to the list */ - *last = c; - last = &c->next; + AppendToGRFConfigList(&_grfconfig, c); } + free(c); /* Append static NewGRF configuration */ - CopyGRFConfigList(last, _grfconfig_static); - - ClearGRFConfigList(&_grfconfig); - _grfconfig = first; AppendStaticGRFConfigs(&_grfconfig); } diff -r baaee83f1596 -r d704bf2ec4ee src/newgrf_config.h --- a/src/newgrf_config.h Sun Feb 18 22:07:08 2007 +0000 +++ b/src/newgrf_config.h Sun Feb 18 22:37:33 2007 +0000 @@ -49,6 +49,7 @@ GRFConfig *GetGRFConfig(uint32 grfid); GRFConfig **CopyGRFConfigList(GRFConfig **dst, const GRFConfig *src); void AppendStaticGRFConfigs(GRFConfig **dst); +void AppendToGRFConfigList(GRFConfig **dst, const GRFConfig *el); void ClearGRFConfig(GRFConfig **config); void ClearGRFConfigList(GRFConfig **config); void ResetGRFConfig(bool defaults);