| Index: compiled/filter/Filter.cpp | 
| =================================================================== | 
| --- a/compiled/filter/Filter.cpp | 
| +++ b/compiled/filter/Filter.cpp | 
| @@ -145,17 +145,20 @@ | 
| 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; | 
| } | 
|  | 
| -  // This is a hack: we looked up the entry using text but create it using | 
| -  // filter->mText. This works because both are equal at this point. However, | 
| -  // text refers to a temporary buffer which will go away. | 
| enter_context("Adding to known filters"); | 
| -  knownFilter.assign(filter->mText, filter.get()); | 
| +  if (text != filter->mText) | 
| +    knownFilters[filter->mText] = filter.get(); | 
| +  else | 
| +    // This is a hack: we looked up the entry using text but create it using | 
| +    // filter->mText. This works because both are equal at this point. However, | 
| +    // text refers to a temporary buffer which will go away. | 
| +    knownFilter.assign(filter->mText, filter.get()); | 
| exit_context(); | 
|  | 
| return filter.release(); | 
| } | 
|  |