Index: src/ch/CustomCopyDlg.cpp
===================================================================
diff -u -N -rba802caea92ee56a154d1da3fe89a4b2f7875f0e -rb193a95402f2bf4c456fb9d65d111caaf6994823
--- src/ch/CustomCopyDlg.cpp	(.../CustomCopyDlg.cpp)	(revision ba802caea92ee56a154d1da3fe89a4b2f7875f0e)
+++ src/ch/CustomCopyDlg.cpp	(.../CustomCopyDlg.cpp)	(revision b193a95402f2bf4c456fb9d65d111caaf6994823)
@@ -278,11 +278,8 @@
 	lvc.cx=static_cast<int>(0.1*rc.Width());
 	m_ctlFilters.InsertColumn(6, &lvc);
 
-	chcore::TFileFiltersArray afFilters;
-	chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters);
+	m_bFilters = !m_tTaskDefinition.GetFilters().IsEmpty();
 
-	m_bFilters = !afFilters.IsEmpty();
-
 	// other custom flags
 	m_bIgnoreFolders = chcore::GetTaskPropValue<chcore::eTO_IgnoreDirectories>(m_tTaskDefinition.GetConfiguration());
 	m_bForceDirectories = chcore::GetTaskPropValue<chcore::eTO_CreateDirectoriesRelativeToRoot>(m_tTaskDefinition.GetConfiguration());
@@ -379,7 +376,7 @@
 	m_ctlFilters.InsertColumn(6, &lvc);
 
 	// refresh the entries in filters' list
-	chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration());
+	const chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters();
 	m_ctlFilters.DeleteAllItems();
 	for(size_t stIndex = 0; stIndex < afFilters.GetSize(); ++stIndex)
 	{
@@ -591,19 +588,18 @@
 void CCustomCopyDlg::OnAddfilterButton() 
 {
 	CFilterDlg dlg;
-	chcore::TString strData;
 
-	chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration());
+	chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters();
 	for (size_t i = 0; i < afFilters.GetSize(); i++)
 	{
 		const chcore::TFileFilter* pFilter = afFilters.GetAt(i);
 		BOOST_ASSERT(pFilter);
 		if(pFilter)
 		{
 			if(pFilter->GetUseMask())
-				dlg.m_astrAddMask.Add(pFilter->GetCombinedMask(strData));
+				dlg.m_astrAddMask.Add(pFilter->GetCombinedMask());
 			if(pFilter->GetUseExcludeMask())
-				dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask(strData));
+				dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask());
 		}
 	}
 	
@@ -612,7 +608,6 @@
 		if(dlg.m_ffFilter.GetUseMask() || dlg.m_ffFilter.GetUseExcludeMask() || dlg.m_ffFilter.GetUseSize1() || dlg.m_ffFilter.GetUseDateTime1() || dlg.m_ffFilter.GetUseAttributes())
 		{
 			afFilters.Add(dlg.m_ffFilter);
-			chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters);
 			AddFilter(dlg.m_ffFilter);
 		}
 		else
@@ -634,8 +629,7 @@
 	
 	if (rFilter.GetUseMask())
 	{
-		chcore::TString strData;
-		rFilter.GetCombinedMask(strData);
+		chcore::TString strData = rFilter.GetCombinedMask();
 		_tcscpy(szLoaded, strData);
 	}
 	else
@@ -650,8 +644,7 @@
 	
 	if (rFilter.GetUseExcludeMask())
 	{
-		chcore::TString strData;
-		rFilter.GetCombinedExcludeMask(strData);
+		chcore::TString strData = rFilter.GetCombinedExcludeMask();
 		_tcscpy(szLoaded, strData);
 	}
 	else
@@ -760,7 +753,7 @@
 
 void CCustomCopyDlg::OnRemovefilterButton() 
 {
-	chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration());
+	chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters();
 
 	POSITION pos;
 	int iItem;
@@ -774,8 +767,6 @@
 			iItem=m_ctlFilters.GetNextSelectedItem(pos);
 			m_ctlFilters.DeleteItem(iItem);
 			afFilters.RemoveAt(iItem);
-
-			chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters);
 		}
 	}
 }
@@ -821,7 +812,7 @@
 	POSITION pos = m_ctlFilters.GetFirstSelectedItemPosition();
 	if(pos != NULL)
 	{
-		chcore::TFileFiltersArray afFilters = chcore::GetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration());
+		chcore::TFileFiltersArray& afFilters = m_tTaskDefinition.GetFilters();
 
 		int iItem = m_ctlFilters.GetNextSelectedItem(pos);
 		CFilterDlg dlg;
@@ -830,17 +821,16 @@
 		if(pFilter)
 			dlg.m_ffFilter = *pFilter;
 		
-		chcore::TString strData;
 		for(size_t stIndex = 0; stIndex < afFilters.GetSize(); ++stIndex)
 		{
 			pFilter = afFilters.GetAt(stIndex);
 			BOOST_ASSERT(pFilter);
 			if(pFilter)
 			{
 				if(pFilter->GetUseMask() && boost::numeric_cast<int>(stIndex) != iItem)
-					dlg.m_astrAddMask.Add(pFilter->GetCombinedMask(strData));
+					dlg.m_astrAddMask.Add(pFilter->GetCombinedMask());
 				if (pFilter->GetUseExcludeMask() && boost::numeric_cast<int>(stIndex) != iItem)
-					dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask(strData));
+					dlg.m_astrAddExcludeMask.Add(pFilter->GetCombinedExcludeMask());
 			}
 		}
 
@@ -855,7 +845,6 @@
 				|| dlg.m_ffFilter.GetUseDateTime1() || dlg.m_ffFilter.GetUseAttributes())
 			{
 				afFilters.SetAt(iItem, dlg.m_ffFilter);
-				chcore::SetTaskPropValue<chcore::eTO_Filters>(m_tTaskDefinition.GetConfiguration(), afFilters);
 				AddFilter(dlg.m_ffFilter, iItem);
 			}
 		}