Index: src/libchcore/TSubTaskScanDirectory.cpp
===================================================================
diff -u -ra7834ba278464cb62739f22d35f9bc16269706a1 -rb193a95402f2bf4c456fb9d65d111caaf6994823
--- src/libchcore/TSubTaskScanDirectory.cpp	(.../TSubTaskScanDirectory.cpp)	(revision a7834ba278464cb62739f22d35f9bc16269706a1)
+++ src/libchcore/TSubTaskScanDirectory.cpp	(.../TSubTaskScanDirectory.cpp)	(revision b193a95402f2bf4c456fb9d65d111caaf6994823)
@@ -122,6 +122,7 @@
 	TWorkerThreadController& rThreadController = GetContext().GetThreadController();
 	TBasePathDataContainerPtr spBasePaths = GetContext().GetBasePaths();
 	const TConfig& rConfig = GetContext().GetConfig();
+	const TFileFiltersArray& rafFilters = GetContext().GetFilters();
 
 	rLog.logi(_T("Searching for files..."));
 
@@ -139,10 +140,6 @@
 	// delete the content of rFilesCache
 	rFilesCache.Clear();
 
-	// read filtering options
-	TFileFiltersArray afFilters;
-	GetTaskPropValue<eTO_Filters>(rConfig, afFilters);
-
 	bool bIgnoreDirs = GetTaskPropValue<eTO_IgnoreDirectories>(rConfig);
 	bool bForceDirectories = GetTaskPropValue<eTO_CreateDirectoriesRelativeToRoot>(rConfig);
 
@@ -239,7 +236,7 @@
 			strFormat.Replace(_t("%path"), spFileInfo->GetFullFilePath().ToString());
 			rLog.logi(strFormat);
 
-			ScanDirectory(spFileInfo->GetFullFilePath(), spBasePath, true, !bIgnoreDirs || bForceDirectories, afFilters);
+			ScanDirectory(spFileInfo->GetFullFilePath(), spBasePath, true, !bIgnoreDirs || bForceDirectories, rafFilters);
 
 			// check for kill need
 			if(rThreadController.KillRequested())
@@ -253,7 +250,7 @@
 		else
 		{
 			// add file info if passes filters
-			if(afFilters.Match(spFileInfo))
+			if(rafFilters.Match(spFileInfo))
 				rFilesCache.AddFileInfo(spFileInfo);
 
 			// log
@@ -283,7 +280,8 @@
 	m_tSubTaskStats.GetSnapshot(spStats);
 }
 
-int TSubTaskScanDirectories::ScanDirectory(TSmartPath pathDirName, const TBasePathDataPtr& spBasePathData, bool bRecurse, bool bIncludeDirs, TFileFiltersArray& afFilters)
+int TSubTaskScanDirectories::ScanDirectory(TSmartPath pathDirName, const TBasePathDataPtr& spBasePathData,
+										   bool bRecurse, bool bIncludeDirs, const TFileFiltersArray& afFilters)
 {
 	TFileInfoArray& rFilesCache = GetContext().GetFilesCache();
 	TWorkerThreadController& rThreadController = GetContext().GetThreadController();