From 5c59ed2011905207bcd939a282513775d284dbd8 Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 12 Sep 2009 14:40:26 +0000 Subject: [PATCH] (svn r17510) -Fix [FS#3197]: When loading GRFConfigs from ini file, validate them wrt. duplicate GRF IDs. --- src/settings.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/settings.cpp b/src/settings.cpp index 0e6a94aaca..312045a59a 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1183,6 +1183,20 @@ static GRFConfig *GRFLoadConfig(IniFile *ini, const char *grpname, bool is_stati continue; } + /* Check for duplicate GRFID (will also check for duplicate filenames) */ + bool duplicate = false; + for (const GRFConfig *gc = first; gc != NULL; gc = gc->next) { + if (gc->grfid == c->grfid) { + ShowInfoF("ini: ignoring NewGRF '%s': duplicate GRF ID with '%s'", item->name, gc->filename); + duplicate = true; + break; + } + } + if (duplicate) { + ClearGRFConfig(&c); + continue; + } + /* Mark file as static to avoid saving in savegame. */ if (is_static) SetBit(c->flags, GCF_STATIC);