diff --git a/AUTHORS.md b/AUTHORS.md index bb44edc..5efa8be 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,2 +1,3 @@ Sergiotarxz sergiotarxz@posteo.net Project leader and developer [Gitea](https://gitea.sergiotarxz.freemyip.com/sergiotarxz) Germe.db FOSSgerme.deb@tuta.io Author of the icon openmg.svg. [sr.ht](https://sr.ht/~germe-fur/) +Endes endes@disroot.org Developer [Github](https://github.com/endes0) diff --git a/openmg.supp b/openmg.supp new file mode 100644 index 0000000..97e8055 --- /dev/null +++ b/openmg.supp @@ -0,0 +1,36 @@ +# +# Valgrind suppression file for mangareader. +# Warning: This file is very generic, so a real memory leak might be suppressed. +# Also, some false positives are still captured +# +# Format specification: +# http://valgrind.org/docs/manual/manual-core.html#manual-core.suppress +# +{ + gtk4 + Memcheck:Leak + ... + obj:/usr/lib/x86_64-linux-gnu/libgtk-4.so.1.600.0 + ... +} +{ + glib + Memcheck:Leak + ... + obj:/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.7100.0 + ... +} +{ + fontconfig + Memcheck:Leak + ... + obj:/usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0 + ... +} +{ + gallium + Memcheck:Leak + ... + obj:/usr/lib/x86_64-linux-gnu/GL/default/lib/dri/libgallium_dri.so + ... +} diff --git a/src/backend/readmng.c b/src/backend/readmng.c index b225e30..7ab3f88 100644 --- a/src/backend/readmng.c +++ b/src/backend/readmng.c @@ -409,6 +409,7 @@ cleanup_mg_backend_readmng_retrieve_manga_details: if (movie_detail) { g_free (movie_detail); } + xmlFreeDoc(html_document); } static GListStore * @@ -453,6 +454,9 @@ cleanup_mg_backend_readmng_recover_chapter_list: xmlXPathFreeObject(xpath_result); } if (uls) { + for (size_t i = 0; i < ul_len; i++) { + xmlFreeNode(uls[i]); + } g_free (uls); } return return_value; @@ -588,6 +592,7 @@ mg_backend_readmng_parse_main_page (MgBackendReadmng *self, const xmlDocPtr html xmlFreeNode (current_li); li[i] = NULL; } + xmlFreeNode(slides); g_free (li); return mangas; } @@ -643,6 +648,11 @@ cleanup_mg_backend_readmng_retrieve_slides: xmlXPathFreeObject(xpath_result); } if (nodes) { + for (size_t i = 1; i < matching_classes_len; i++) + { + xmlFreeNode(nodes[i]); + } + g_free (nodes); } return slides;