(svn r17291) -Fix [FS#3147]: crash after upgrading base graphics/sound set when opening the game options menu and you were using the upgraded set

This commit is contained in:
rubidium 2009-08-26 20:26:40 +00:00
parent 57a05d6933
commit 984efae368
2 changed files with 7 additions and 0 deletions

View File

@ -159,6 +159,11 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length)
/* don't allow recursive delete of all remaining items */
duplicate->next = NULL;
/* If the duplicate set is currently used (due to rescanning this can happen)
* update the currently used set to the new one. This will 'lie' about the
* version number until a new game is started which isn't a big problem */
if (BaseMedia<Tbase_set>::used_set == duplicate) BaseMedia<Tbase_set>::used_set = set;
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate)", duplicate->name, duplicate->version);
delete duplicate;
ret = true;

View File

@ -100,10 +100,12 @@ public:
case CONTENT_TYPE_BASE_GRAPHICS:
BaseGraphics::FindSets();
InvalidateWindow(WC_GAME_OPTIONS, 0);
break;
case CONTENT_TYPE_BASE_SOUNDS:
BaseSounds::FindSets();
InvalidateWindow(WC_GAME_OPTIONS, 0);
break;
case CONTENT_TYPE_NEWGRF: