ChooseMemcardPath bugfix: check for a directory separator before converting an absolute path to a relative path.

if the exe directory and the save directory had the same prefix, .../dolphin emulator/... and .../dolphin/... the path would previously have been incorrectly changed
This commit is contained in:
LPFaint99 2013-10-04 11:31:22 -07:00
parent fe3d0c9aa2
commit 8c103a8dee
1 changed files with 8 additions and 2 deletions

View File

@ -1076,8 +1076,14 @@ void CConfigMain::ChooseMemcardPath(std::string& strMemcard, bool isSlotA)
#ifdef _WIN32
if (!strncmp(File::GetExeDirectory().c_str(), filename.c_str(), File::GetExeDirectory().size()))
{
filename.erase(0, File::GetExeDirectory().size() +1);
filename = "./" + filename;
// If the Exe Directory Matches the prefix of the filename, we still need to verify
// that the next character is a directory separator character, otherwise we may create an invalid path
char next_char = filename.at(File::GetExeDirectory().size())+1;
if (next_char == '/' || next_char == '\\')
{
filename.erase(0, File::GetExeDirectory().size() +1);
filename = "./" + filename;
}
}
#endif