From 98a3c5e6993ac6b3af1dd9339469ea2ba71a5334 Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Wed, 20 Apr 2011 05:04:43 +0000 Subject: [PATCH] - bugfix for mod menu segfault when user clicks like mad --- source/glest_game/menu/menu_state_mods.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/source/glest_game/menu/menu_state_mods.cpp b/source/glest_game/menu/menu_state_mods.cpp index f84b89e7..b46c698a 100644 --- a/source/glest_game/menu/menu_state_mods.cpp +++ b/source/glest_game/menu/menu_state_mods.cpp @@ -1662,9 +1662,22 @@ void MenuStateMods::showDesription(const ModInfo *modInfo) { string tempImage = getPreviewImageFileForMod(modInfo); if(tempImage != "" && fileExists(tempImage) == false) { if(ftpClientThread != NULL) ftpClientThread->addFileToRequests(tempImage,modInfo->imageUrl); + + static string mutexOwnerId = string(__FILE__) + string("_") + intToStr(__LINE__); + MutexSafeWrapper safeMutexFTPProgress((ftpClientThread != NULL ? ftpClientThread->getProgressMutex() : NULL),mutexOwnerId); + if(ftpClientThread != NULL && ftpClientThread->getProgressMutex() != NULL) ftpClientThread->getProgressMutex()->setOwnerId(mutexOwnerId); + fileFTPProgressList[tempImage] = pair(0,""); + safeMutexFTPProgress.ReleaseLock(); + } else { - displayModPreviewImage = true; + static string mutexOwnerId = string(__FILE__) + string("_") + intToStr(__LINE__); + MutexSafeWrapper safeMutexFTPProgress((ftpClientThread != NULL ? ftpClientThread->getProgressMutex() : NULL),mutexOwnerId); + if(ftpClientThread != NULL && ftpClientThread->getProgressMutex() != NULL) ftpClientThread->getProgressMutex()->setOwnerId(mutexOwnerId); + if(fileFTPProgressList.find(tempImage) == fileFTPProgressList.end()) { + displayModPreviewImage = true; + } + safeMutexFTPProgress.ReleaseLock(); } } }