From 4f51623d122faa068e30224a9351ecb290a70029 Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 3 Jul 2010 20:02:14 +0000 Subject: (svn r20066) -Fix: When rescanning NewGRFs resp. after content download also check whether compatible grfs are available now. --- src/newgrf_gui.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp index 566bcbb4e..290f30e88 100644 --- a/src/newgrf_gui.cpp +++ b/src/newgrf_gui.cpp @@ -713,20 +713,20 @@ struct NewGRFWindow : public QueryStringBaseWindow { case 1: /* Search the list for items that are now found and mark them as such. */ - for (GRFConfig *c = this->actives; c != NULL; c = c->next) { - if (c->status != GCS_NOT_FOUND) continue; + for (GRFConfig **l = &this->actives; *l != NULL; l = &(*l)->next) { + GRFConfig *c = *l; + bool compatible = HasBit(c->flags, GCF_COMPATIBLE); + if (c->status != GCS_NOT_FOUND && !compatible) continue; - const GRFConfig *f = FindGRFConfig(c->ident.grfid, c->ident.md5sum); + const GRFConfig *f = FindGRFConfig(c->ident.grfid, compatible ? c->original_md5sum : c->ident.md5sum); if (f == NULL) continue; - free(c->filename); - free(c->name); - free(c->info); + *l = DuplicateGRFConfig(f); + (*l)->next = c->next; - c->filename = f->filename == NULL ? NULL : strdup(f->filename); - c->name = f->name == NULL ? NULL : strdup(f->name); - c->info = f->info == NULL ? NULL : strdup(f->info); - c->status = GCS_UNKNOWN; + if (active_sel == c) active_sel = *l; + + delete c; } /* Fall through. */ case 4: -- cgit v1.2.3-70-g09d2