| Index: compiled/filter/Filter.cpp |
| =================================================================== |
| --- a/compiled/filter/Filter.cpp |
| +++ b/compiled/filter/Filter.cpp |
| @@ -99,21 +99,22 @@ |
| // Parsing also normalizes the filter text, so it has to be done before the |
| // lookup in knownFilters. |
| union |
| { |
| RegExpFilterData regexp; |
| ElemHideData elemhide; |
| } data; |
| + ParsedDomains parsedDomains; |
| DependentString error; |
| Filter::Type type = CommentFilter::Parse(text); |
| if (type == Filter::Type::UNKNOWN) |
| - type = ElemHideBase::Parse(text, data.elemhide); |
| + type = ElemHideBase::Parse(text, error, data.elemhide, parsedDomains); |
| if (type == Filter::Type::UNKNOWN) |
| type = RegExpFilter::Parse(text, error, data.regexp); |
| auto knownFilter = knownFilters.find(text); |
| if (knownFilter) |
| { |
| knownFilter->second->AddRef(); |
| return knownFilter->second; |
| @@ -130,23 +131,26 @@ |
| break; |
| case BlockingFilter::classType: |
| filter = FilterPtr(new BlockingFilter(text, data.regexp), false); |
| break; |
| case WhitelistFilter::classType: |
| filter = FilterPtr(new WhitelistFilter(text, data.regexp), false); |
| break; |
| case ElemHideFilter::classType: |
| - filter = FilterPtr(new ElemHideFilter(text, data.elemhide), false); |
| + filter = FilterPtr(new ElemHideFilter(text, data.elemhide, |
| + parsedDomains), false); |
| break; |
| case ElemHideException::classType: |
| - filter = FilterPtr(new ElemHideException(text, data.elemhide), false); |
| + filter = FilterPtr(new ElemHideException(text, data.elemhide, |
| + parsedDomains), false); |
| break; |
| case ElemHideEmulationFilter::classType: |
| - filter = FilterPtr(new ElemHideEmulationFilter(text, data.elemhide), false); |
| + filter = FilterPtr(new ElemHideEmulationFilter(text, data.elemhide, |
| + parsedDomains), false); |
| if (static_cast<ElemHideEmulationFilter*>(filter.get())->IsGeneric()) |
| filter = FilterPtr(new InvalidFilter(text, u"filter_elemhideemulation_nodomain"_str), false); |
| break; |
| default: |
| // This should never happen but just in case |
| return nullptr; |
| } |