Index: src/libchcore/TSubTaskBase.cpp =================================================================== diff -u -N -r9ba9390b8f79c7a3fd1f9d6d9e92038d92222621 -r2efd22688b8d12be34c87bf2b024d8db6e317d60 --- src/libchcore/TSubTaskBase.cpp (.../TSubTaskBase.cpp) (revision 9ba9390b8f79c7a3fd1f9d6d9e92038d92222621) +++ src/libchcore/TSubTaskBase.cpp (.../TSubTaskBase.cpp) (revision 2efd22688b8d12be34c87bf2b024d8db6e317d60) @@ -45,9 +45,9 @@ { } -TSmartPath TSubTaskBase::CalculateDestinationPath(const TFileInfoPtr& spFileInfo, TSmartPath pathDst, int iFlags) const +TSmartPath TSubTaskBase::CalculateDestinationPath(const TFileInfoPtr& spFileInfo, TSmartPath pathDst, int iFlags) { - const TBasePathDataContainer& rSourcePathsInfo = GetContext().GetBasePathDataContainer(); + TBasePathDataContainer& rSourcePathsInfo = GetContext().GetBasePathDataContainer(); if(!spFileInfo) THROW_CORE_EXCEPTION(eErr_InvalidArgument); @@ -65,24 +65,25 @@ } else { - size_t stSrcIndex = spFileInfo->GetSrcIndex(); + size_t stSrcObjectID = spFileInfo->GetSrcObjectID(); - if(!(iFlags & 0x01) && stSrcIndex != std::numeric_limits::max()) + if(!(iFlags & 0x01) && stSrcObjectID != std::numeric_limits::max()) { // generate new dest name - if(!rSourcePathsInfo.GetAt(stSrcIndex)->IsDestinationPathSet()) + TBasePathDataPtr spPathData = rSourcePathsInfo.Get(stSrcObjectID); + if(!spPathData->IsDestinationPathSet()) { // generate something - if dest folder == src folder - search for copy if(pathDst == spFileInfo->GetFullFilePath().GetFileRoot()) { TSmartPath pathSubst = FindFreeSubstituteName(spFileInfo->GetFullFilePath(), pathDst); - rSourcePathsInfo.GetAt(stSrcIndex)->SetDestinationPath(pathSubst); + spPathData->SetDestinationPath(pathSubst); } else - rSourcePathsInfo.GetAt(stSrcIndex)->SetDestinationPath(spFileInfo->GetFullFilePath().GetFileName()); + spPathData->SetDestinationPath(spFileInfo->GetFullFilePath().GetFileName()); } - return pathDst + rSourcePathsInfo.GetAt(stSrcIndex)->GetDestinationPath() + spFileInfo->GetFilePath(); + return pathDst + spPathData->GetDestinationPath() + spFileInfo->GetFilePath(); } else return pathDst + spFileInfo->GetFullFilePath().GetFileName();