diff --git a/Common/FileUtil.cpp b/Common/FileUtil.cpp index 8152762ad3..776913f63c 100644 --- a/Common/FileUtil.cpp +++ b/Common/FileUtil.cpp @@ -121,7 +121,7 @@ std::string ResolvePath(const std::string &path) { if (hFile == INVALID_HANDLE_VALUE) { wcscpy_s(buf, BUF_SIZE - 1, input.c_str()); } else { - int result = GetFinalPathNameByHandle(hFile, buf, BUF_SIZE - 1, FILE_NAME_NORMALIZED | VOLUME_NAME_DOS); + int result = getFinalPathNameByHandleW(hFile, buf, BUF_SIZE - 1, FILE_NAME_NORMALIZED | VOLUME_NAME_DOS); if (result >= BUF_SIZE || result == 0) wcscpy_s(buf, BUF_SIZE - 1, input.c_str()); } diff --git a/Core/Config.cpp b/Core/Config.cpp index 048bb4baad..03e1043ddb 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -1210,18 +1210,10 @@ void Config::AddRecent(const std::string &file) { if (iMaxRecent <= 0) return; - const std::string filename = File::ResolvePath(file); - for (auto iter = recentIsos.begin(); iter != recentIsos.end();) { - const std::string recent = File::ResolvePath(*iter); - if (filename == recent) { - // Note that the increment-erase idiom doesn't work with vectors. - iter = recentIsos.erase(iter); - // We'll add it back below. - } else { - iter++; - } - } + // We'll add it back below. This makes sure it's at the front, and only once. + RemoveRecent(file); + const std::string filename = File::ResolvePath(file); recentIsos.insert(recentIsos.begin(), filename); if ((int)recentIsos.size() > iMaxRecent) recentIsos.resize(iMaxRecent);