| Index: src/plugin/PluginTabBase.cpp | 
| =================================================================== | 
| --- a/src/plugin/PluginTabBase.cpp | 
| +++ b/src/plugin/PluginTabBase.cpp | 
| @@ -25,13 +25,11 @@ | 
| #include "../shared/Utils.h" | 
| #include <Mshtmhst.h> | 
|  | 
| -CPluginTabBase::CPluginTabBase(CPluginClass* plugin) | 
| -  : m_plugin(plugin) | 
| -  , m_isActivated(false) | 
| +CPluginTabBase::CPluginTabBase() | 
| +  : m_isActivated(false) | 
| , m_continueThreadRunning(true) | 
| { | 
| -  m_filter = std::auto_ptr<CPluginFilter>(new CPluginFilter()); | 
| -  m_filter->hideFiltersLoadedEvent = CreateEvent(NULL, true, false, NULL); | 
| +  m_filter.hideFiltersLoadedEvent = CreateEvent(NULL, true, false, NULL); | 
|  | 
| CPluginClient* client = CPluginClient::GetInstance(); | 
| if (AdblockPlus::IE::InstalledMajorVersion() < 10) | 
| @@ -76,12 +74,12 @@ | 
| namespace | 
| { | 
| // Entry Point | 
| -  void FilterLoader(CPluginTabBase* tabBase) | 
| +  void FilterLoader(CPluginFilter* filter, const std::wstring& domain) | 
| { | 
| try | 
| { | 
| -      tabBase->m_filter->LoadHideFilters(CPluginClient::GetInstance()->GetElementHidingSelectors(tabBase->GetDocumentDomain())); | 
| -      SetEvent(tabBase->m_filter->hideFiltersLoadedEvent); | 
| +      filter->LoadHideFilters(CPluginClient::GetInstance()->GetElementHidingSelectors(domain)); | 
| +      SetEvent(filter->hideFiltersLoadedEvent); | 
| } | 
| catch (...) | 
| { | 
| @@ -95,10 +93,10 @@ | 
| SetDocumentUrl(url); | 
| ClearFrameCache(GetDocumentDomain()); | 
| std::wstring domainString = GetDocumentDomain(); | 
| -  ResetEvent(m_filter->hideFiltersLoadedEvent); | 
| +  ResetEvent(m_filter.hideFiltersLoadedEvent); | 
| try | 
| { | 
| -    std::thread filterLoaderThread(&FilterLoader, this); | 
| +    std::thread filterLoaderThread(&FilterLoader, &m_filter, GetDocumentDomain()); | 
| filterLoaderThread.detach(); // TODO: but actually we should wait for the thread in the dtr. | 
| } | 
| catch (const std::system_error& ex) | 
|  |