From 0b41bd3414ba9fcb9ea697da7ab8a4369c32bc95 Mon Sep 17 00:00:00 2001
From: Andrew Dolgov <fox@fakecake.org>
Date: Mon, 11 Jan 2016 01:11:26 +0300
Subject: [PATCH] add some hacks to hopefully mitigate headlines memory leaks

---
 js/feedlist.js | 19 +++++++++++++++++++
 js/viewfeed.js |  2 ++
 2 files changed, 21 insertions(+)

diff --git a/js/feedlist.js b/js/feedlist.js
index c9ff121d..eb6cbdfe 100644
--- a/js/feedlist.js
+++ b/js/feedlist.js
@@ -51,6 +51,23 @@ function loadMoreHeadlines() {
 	}
 }
 
+function cleanup_memory(root) {
+	try {
+		var dijits = dojo.query("[widgetid]", dijit.byId(root).domNode).map(dijit.byNode);
+
+		dijits.each(function (d) {
+			dojo.destroy(d.domNode);
+		});
+
+		$$("#" + root + " *").each(function (i) {
+			i.parentNode ? i.parentNode.removeChild(i) : true;
+		});
+	} catch (e) {
+		console.log("cleanup_memory: exception");
+		console.log(e);
+	}
+}
+
 function viewfeed(params) {
 	try {
 		var feed = params.feed;
@@ -83,6 +100,8 @@ function viewfeed(params) {
 			if (getActiveFeedId() != feed || !infscroll_req) {
 				setActiveArticleId(0);
 				_infscroll_disable = 0;
+
+				cleanup_memory("headlines-frame");
 			}
 
 			if (infscroll_req) {
diff --git a/js/viewfeed.js b/js/viewfeed.js
index 3b647e08..181a932e 100755
--- a/js/viewfeed.js
+++ b/js/viewfeed.js
@@ -244,6 +244,8 @@ function headlines_callback2(transport, offset, background, infscroll_req) {
 
 function render_article(article) {
 	try {
+		cleanup_memory("content-insert");
+
 		dijit.byId("headlines-wrap-inner").addChild(
 				dijit.byId("content-insert"));
 
-- 
2.39.5