diff --git a/Source/Core/DolphinQt/GameList/GameFile.cpp b/Source/Core/DolphinQt/GameList/GameFile.cpp index 4cc6b9a328..44c68ffd8d 100644 --- a/Source/Core/DolphinQt/GameList/GameFile.cpp +++ b/Source/Core/DolphinQt/GameList/GameFile.cpp @@ -243,17 +243,8 @@ void GameFile::SaveToCache() bool GameFile::IsElfOrDol() const { - const std::string name = m_file_name.toStdString(); - const size_t pos = name.rfind('.'); - - if (pos != std::string::npos) - { - std::string ext = name.substr(pos); - std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); - - return ext == ".elf" || ext == ".dol"; - } - return false; + return m_file_name.endsWith(QStringLiteral(".elf"), Qt::CaseInsensitive) || + m_file_name.endsWith(QStringLiteral(".dol"), Qt::CaseInsensitive); } QString GameFile::CreateCacheFilename() const diff --git a/Source/Core/DolphinWX/ISOFile.cpp b/Source/Core/DolphinWX/ISOFile.cpp index 58d7b71ad7..3858cbca61 100644 --- a/Source/Core/DolphinWX/ISOFile.cpp +++ b/Source/Core/DolphinWX/ISOFile.cpp @@ -216,15 +216,12 @@ void GameListItem::DoState(PointerWrap &p) bool GameListItem::IsElfOrDol() const { - const size_t pos = m_FileName.rfind('.'); - if (pos != std::string::npos) - { - std::string ext = m_FileName.substr(pos); - std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); + if (m_FileName.size() < 4) + return false; - return ext == ".elf" || ext == ".dol"; - } - return false; + std::string name_end = m_FileName.substr(m_FileName.size() - 4); + std::transform(name_end.begin(), name_end.end(), name_end.begin(), ::tolower); + return name_end == ".elf" || name_end == ".dol"; } std::string GameListItem::CreateCacheFilename() const