Index: src/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
=================================================================== |
--- a/src/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
+++ b/src/org/adblockplus/sbrowser/contentblocker/engine/Subscriptions.java |
@@ -36,16 +36,19 @@ import android.util.Log; |
* This class holds all listed subscriptions and manages the subscription |
* aggregation cache folder. |
*/ |
final class Subscriptions |
{ |
private static final String TAG = Subscriptions.class.getSimpleName(); |
private static final String[] USER_SUBSCRIPTIONS = |
{ Engine.USER_FILTERS_TITLE, Engine.USER_EXCEPTIONS_TITLE }; |
+ // Filters that begin with '|$' , '||$' , '@@|$' or '@@||$' need to be removed |
+ // See https://issues.adblockplus.org/ticket/4772 |
+ private static final String UNSUPPORTED_FILTERS_REGEX = "^(\\|\\$|\\|\\|\\$|@@\\|\\$|@@\\|\\|\\$).*"; |
private final HashMap<String, Subscription> subscriptions = new HashMap<String, Subscription>(); |
private final Engine engine; |
private final File subscriptionFolder; |
private final File cacheFolder; |
private final boolean wasUnitialized; |
private Subscriptions(final Engine engine, final File appFolder, final File cacheFolder) |
@@ -181,18 +184,27 @@ final class Subscriptions |
final BufferedWriter w = new BufferedWriter( |
new OutputStreamWriter(new FileOutputStream(output), "UTF-8")); |
try |
{ |
Log.d(TAG, "Writing " + filters.size() + " filters"); |
Engine.writeFilterHeaders(w); |
for (final String filter : filters) |
{ |
- w.write(filter); |
- w.write('\n'); |
+ // This is a temporary fix to not write filters that might crash Samsung Internet |
+ // See https://issues.adblockplus.org/ticket/4772 |
+ if (!filter.matches(UNSUPPORTED_FILTERS_REGEX)) |
+ { |
+ w.write(filter); |
+ w.write('\n'); |
+ } |
+ else |
+ { |
+ Log.d(TAG, "Ignoring unsupported filter: " + filter); |
+ } |
} |
} |
finally |
{ |
w.close(); |
} |
} |