From 45f1948d33a2589ece828abaf568b7edcb863a9b Mon Sep 17 00:00:00 2001 From: skidau Date: Thu, 11 Nov 2010 09:17:57 +0000 Subject: [PATCH] Fixed double game entries in the game list. This occurs when there are two or more games of the same name in different folders. Fix by Lostmoment. Fixes issue 2857. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6380 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/DolphinWX/Src/ISOFile.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Core/DolphinWX/Src/ISOFile.cpp b/Source/Core/DolphinWX/Src/ISOFile.cpp index 50125ea096..596863846e 100644 --- a/Source/Core/DolphinWX/Src/ISOFile.cpp +++ b/Source/Core/DolphinWX/Src/ISOFile.cpp @@ -26,6 +26,7 @@ #include "FileUtil.h" #include "ISOFile.h" #include "StringUtil.h" +#include "Hash.h" #include "Filesystem.h" #include "BannerLoader.h" @@ -178,10 +179,15 @@ void GameListItem::DoState(PointerWrap &p) std::string GameListItem::CreateCacheFilename() { - std::string Filename; - SplitPath(m_FileName, NULL, &Filename, NULL); + std::string Filename, LegalPathname; + SplitPath(m_FileName, &LegalPathname, &Filename, NULL); if (Filename.empty()) return Filename; // Disc Drive + + // Append hash to prevent ISO name-clashing in different folders. + Filename.append(StringFromFormat("%x", + HashFletcher((const u8 *)LegalPathname.c_str(), LegalPathname.size()))); + // We add gcz to the cache file if the file is compressed to avoid it reading // the uncompressed file's cache if it has the same name, but not the same ext. if (DiscIO::IsCompressedBlob(m_FileName.c_str()))