Commit Diff


commit - c553191ed9d1aa9c51b3617893fc11019635c3cd
commit + ffcd827cfe2431a4f2ba116bc00b205d12cdf6df
blob - e3559a5205cde174b61019b747a48a20334f18f8
blob + 9a8ccea71b124b4df37e9365ade16c31b54f9a2c
--- mcache.c
+++ mcache.c
@@ -49,6 +49,20 @@ struct mcache_entry {
 	char		 url[];
 };
 
+static void
+mcache_free_entry(const char *url)
+{
+	struct mcache_entry	*e;
+	unsigned int		 slot;
+
+	slot = ohash_qlookup(&mcache.h, url);
+	if ((e = ohash_remove(&mcache.h, slot)) == NULL)
+		return;
+
+	evbuffer_free(e->evb);
+	free(e);
+}
+
 void
 mcache_init(void)
 {
@@ -137,6 +151,9 @@ mcache_tab(struct tab *tab)
 			goto err;
 	}
 
+	/* free any previously cached copies of this page */
+	mcache_free_entry(url);
+
 	slot = ohash_qlookup(&mcache.h, url);
 	ohash_insert(&mcache.h, slot, e);
 	return 0;