mirror of https://github.com/OpenTTD/OpenTTD
(svn r11096) -Fix: when 2 different GRF-files had the same name (e.g.: ""), the double-entry checker didn't always work correctly, resulting in multiple entries of the same grf in the list
parent
8cd9ab9b7e
commit
bf17a96b63
|
@ -315,9 +315,14 @@ static uint ScanPath(const char *path, int basepath_length)
|
||||||
/* Insert file into list at a position determined by its
|
/* Insert file into list at a position determined by its
|
||||||
* name, so the list is sorted as we go along */
|
* name, so the list is sorted as we go along */
|
||||||
GRFConfig **pd, *d;
|
GRFConfig **pd, *d;
|
||||||
|
bool stop = false;
|
||||||
for (pd = &_all_grfs; (d = *pd) != NULL; pd = &d->next) {
|
for (pd = &_all_grfs; (d = *pd) != NULL; pd = &d->next) {
|
||||||
if (c->grfid == d->grfid && memcmp(c->md5sum, d->md5sum, sizeof(c->md5sum)) == 0) added = false;
|
if (c->grfid == d->grfid && memcmp(c->md5sum, d->md5sum, sizeof(c->md5sum)) == 0) added = false;
|
||||||
if (strcasecmp(c->name, d->name) <= 0) break;
|
/* Because there can be multiple grfs with the same name, make sure we checked all grfs with the same name,
|
||||||
|
* before inserting the entry. So insert a new grf at the end of all grfs with the same name, instead of
|
||||||
|
* just after the first with the same name. Avoids doubles in the list. */
|
||||||
|
if (strcasecmp(c->name, d->name) <= 0) stop = true;
|
||||||
|
else if (stop) break;
|
||||||
}
|
}
|
||||||
if (added) {
|
if (added) {
|
||||||
c->next = d;
|
c->next = d;
|
||||||
|
|
Loading…
Reference in New Issue