Index: common/mptPathString.cpp =================================================================== --- common/mptPathString.cpp (revision 22162) +++ common/mptPathString.cpp (working copy) @@ -55,7 +55,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } @@ -79,7 +79,7 @@ using namespace path_literals; using char_type = RawPathString::value_type; mpt::PathString result = path; - if(path.empty()) + if(path.empty() || relativeTo.empty()) { return result; } Index: mptrack/AutoSaver.cpp =================================================================== --- mptrack/AutoSaver.cpp (revision 22162) +++ mptrack/AutoSaver.cpp (working copy) @@ -141,7 +141,7 @@ { mpt::PathString name = GetBasePath(modDoc, true) + GetBaseName(modDoc); const CString timeStamp = CTime::GetCurrentTime().Format(_T(".AutoSave.%Y%m%d.%H%M%S.")); - name += mpt::PathString::FromCString(timeStamp); //append backtup tag + timestamp + name += mpt::PathString::FromCString(timeStamp); // Append backtup tag + timestamp name += mpt::PathString::FromUnicode(modDoc.GetSoundFile().GetModSpecifications().GetFileExtension()); return name; } @@ -167,8 +167,8 @@ case MOD_TYPE_MOD: success = sndFile.SaveMod(f); break; case MOD_TYPE_S3M: success = sndFile.SaveS3M(f); break; case MOD_TYPE_XM: success = sndFile.SaveXM(f); break; - case MOD_TYPE_IT: success = sndFile.SaveIT(f, fileName); break; - case MOD_TYPE_MPT: success = sndFile.SaveIT(f, fileName); break; + case MOD_TYPE_IT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; + case MOD_TYPE_MPT: success = sndFile.SaveIT(f, GetUseOriginalPath() ? fileName : mpt::PathString{}); break; default: // nothing break; Index: test/test.cpp =================================================================== --- test/test.cpp (revision 22162) +++ test/test.cpp (working copy) @@ -2406,6 +2406,8 @@ VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\foo"), exePath), P_("C:\\foo")); VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("\\\\server\\path\\file"), exePath), P_("\\\\server\\path\\file")); + VERIFY_EQUAL(mpt::AbsolutePathToRelative(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); + VERIFY_EQUAL(mpt::RelativePathToAbsolute(P_("C:\\OpenMPT"), mpt::PathString{}), P_("C:\\OpenMPT")); #endif #ifdef MODPLUG_TRACKER