diff options
author | David-Development <david-dev@live.de> | 2022-01-31 20:43:59 +0300 |
---|---|---|
committer | David Luhmer <david-dev@live.de> | 2022-01-31 20:43:59 +0300 |
commit | 2653e2d6907771e328811f428fb6f7adbf952649 (patch) | |
tree | 06ae0dddc6a9273bdbf6e6242cb339c5cb50b68b | |
parent | 4dedd28615939403c38f2db6891e0498b40fce35 (diff) |
Fix OutOfMemoryError while fixing urls - fix #1055
Signed-off-by: David Luhmer <david-dev@live.de>
2 files changed, 16 insertions, 6 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ImageHandler.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ImageHandler.java index bdb0bb33..bf59f1e5 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ImageHandler.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/helper/ImageHandler.java @@ -125,7 +125,12 @@ public class ImageHandler { if(!originalLink.equals(link)) { Log.d(TAG, "Fixed link from: " + originalArticleUrl + " and " + originalLink + " -> " + link); - text = text.replaceAll(originalLink, link); + // text = text.replaceAll(originalLink, link); // this causes OutOfMemoryExceptions (https://github.com/nextcloud/news-android/issues/1055) + + Pattern URL_PATTERN = Pattern.compile(originalLink); + Matcher urlMatcher = URL_PATTERN.matcher(text); + return urlMatcher.replaceAll(link); + } } } diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/reader/nextcloud/InsertRssItemIntoDatabase.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/reader/nextcloud/InsertRssItemIntoDatabase.java index 4e0b3c57..812b9434 100644 --- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/reader/nextcloud/InsertRssItemIntoDatabase.java +++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/reader/nextcloud/InsertRssItemIntoDatabase.java @@ -97,24 +97,29 @@ class InsertRssItemIntoDatabase { int contentLength = content.length(); double sizeInMb = contentLength/1024d/1024d; if(sizeInMb > 0.4) { - Log.w("InsertRssItem", "Massive rss item detected - " + content.length() + " chars / " + content.length()/1024d/1024d + "mb - url:" + rssItem.getLink()); + Log.w(TAG, "Massive rss item detected - " + content.length() + " chars / " + content.length() / 1024d / 1024d + "mb - url: " + rssItem.getLink()); // Trim string down to 500k characters int maxLengthAllowed = 500000; if(content.length() > maxLengthAllowed) { - Log.w("InsertRssItem", "Limiting rss item size to 500k characters - url:" + rssItem.getLink()); + Log.w(TAG, "Limiting rss item size to 500k characters - url:" + rssItem.getLink()); content = content.substring(0, maxLengthAllowed); } } else if(sizeInMb > 0.1) { - Log.w("InsertRssItem", "Large rss item detected - " + content.length() + " chars / " + content.length()/1024d/1024d + "mb - url:" + rssItem.getLink()); + Log.w(TAG, "Large rss item detected - " + content.length() + " chars / " + content.length() / 1024d / 1024d + "mb - url: " + rssItem.getLink()); } try { // try fixing relative image links content = ImageHandler.fixBrokenImageLinksInArticle(url, content); - } catch(Exception ex) { + } catch (Exception ex) { ex.printStackTrace(); - Log.e(TAG, ex.toString()); + Log.e(TAG, "Error while fixing broken image links in article" + ex); + } catch (OutOfMemoryError error) { + error.printStackTrace(); + Log.e(TAG, "OutOfMemoryError while fixing broken image links in article" + error); + Log.e(TAG, "OutOfMemoryError Article length:" + content.length()); + } rssItem.setBody(content); |