Index: src/libchcore/TTaskDefinition.cpp =================================================================== diff -u -rb193a95402f2bf4c456fb9d65d111caaf6994823 -r8b7479db2ee71a3d00779c67fe6a1b1d9ec414b8 --- src/libchcore/TTaskDefinition.cpp (.../TTaskDefinition.cpp) (revision b193a95402f2bf4c456fb9d65d111caaf6994823) +++ src/libchcore/TTaskDefinition.cpp (.../TTaskDefinition.cpp) (revision 8b7479db2ee71a3d00779c67fe6a1b1d9ec414b8) @@ -121,7 +121,8 @@ void TTaskDefinition::SetDestinationPath(const TSmartPath& pathDestination) { m_pathDestinationPath = pathDestination; - m_pathDestinationPath.AppendSeparatorIfDoesNotExist(); + if(!m_pathDestinationPath.IsEmpty()) + m_pathDestinationPath.AppendSeparatorIfDoesNotExist(); m_bModified = true; } @@ -255,7 +256,7 @@ tTaskInfo.WriteToString(strOutput); } -void TTaskDefinition::LoadFromString(const TString& strInput) +void TTaskDefinition::LoadFromString(const TString& strInput, bool bAllowEmptyDstPath) { // read everything TConfig tTaskInfo; @@ -289,10 +290,11 @@ GetConfigValue(tTaskInfo, _T("TaskDefinition.Filters"), m_afFilters); // destination path - if(!GetConfigValue(tTaskInfo, _T("TaskDefinition.DestinationPath"), m_pathDestinationPath) || m_pathDestinationPath.IsEmpty()) + if(!GetConfigValue(tTaskInfo, _T("TaskDefinition.DestinationPath"), m_pathDestinationPath) || (!bAllowEmptyDstPath && m_pathDestinationPath.IsEmpty())) THROW_CORE_EXCEPTION(eErr_MissingXmlData); - m_pathDestinationPath.AppendSeparatorIfDoesNotExist(); + if(!m_pathDestinationPath.IsEmpty()) + m_pathDestinationPath.AppendSeparatorIfDoesNotExist(); // type of the operation int iOperation = eOperation_None;